日期:2014-05-18  浏览次数:20501 次

js无刷新问题
在网上看到一段这样的代码 说可以做到无刷新然后自己改了下!

defalut.aspx
<script language="javascript">
<!--
function callXMLHttp() 
{
  try {
  xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
  } catch(e) {
  xmlHttp = new XMLHttpRequest();
  }
  xmlHttp.onreadystatechange = function() {
  if (xmlHttp.readyState == 4) {
  if (xmlHttp.status == 200) {
  var data = xmlHttp.responseText;
  }
  }
  }
  xmlHttp.open("POST","defalut.aspx);
  xmlHttp.send(null);
}
window.setInterval("callXMLHttp()",5000);
-->
</script>
defalut.aspx.cs
private void Page_Load(object sender, System.EventArgs e)
{
  Response.Write("asp.net");
}
然后运行这个页面! 页面加载的时候打印出来了 "asp.net",页面不关闭
但是我在cs文件里面把asp.net改成.net 然后保存!我不手动刷新浏览器!等了5秒以后页面的值asp.net没有改成.net。
也就是说页面根本就没有做到无刷新! 大家知道这是怎么回事吗?

如果有简单的页面无刷新的代码也可以给我参考下,谢谢了!



------解决方案--------------------
。。
有缓存的。
这个就是利用AJAX的无刷新。是对的。
------解决方案--------------------
首先你的代码有几处拼写错误,下是修改正确的:
function callXMLHttp()
{
var xmlHttp;
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch(e) {
xmlHttp = new XMLHttpRequest();
}
xmlHttp.onreadystatechange = function() {
if (xmlHttp.readyState == 4) {
if (xmlHttp.status == 200) {
var data = xmlHttp.responseText;
}
}
}
xmlHttp.open("POST","default.aspx");
xmlHttp.onreadystatechange = function(e){
if(xmlHttp.readyState==4){
// TODO: 在这里添加处理回调事件的逻辑
}
};
xmlHttp.send(null);
}
window.setInterval("callXMLHttp()",5000);

其次你的代码执行了异步调用,但并没有取回调值,在上面的代码位置中添加处理异步返回数据的带代码。具体信息参考XmlHttpRequest对象的相关参数。
------解决方案--------------------
JS代码:
<script language="javascript" type="text/javascript"> 
function callXMLHttp() 

var xmlHttp;
try { 
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); 
} catch(e) { 
xmlHttp = new XMLHttpRequest(); 

xmlHttp.onreadystatechange = function() { 
if (xmlHttp.readyState == 4) { 
if (xmlHttp.status == 200) { 
var data = xmlHttp.responseText; 
document.body.innerHTML=data; } 


xmlHttp.open("POST","sfsdfsdf.aspx"); 
xmlHttp.send(null); 

window.setInterval("callXMLHttp()",2000); 

</script> 
。CS代码:
 protected void Page_Load(object sender, EventArgs e)
{
Response.Cache.SetNoStore();
Response.Clear();
Response.Write(DateTime.Now.ToString());
}
再运行你看一眼,绝对是无刷新可变的时间,2秒一次。我试过了
------解决方案--------------------
xmlHttp.open("POST","defalut.aspx?id="+Math.Random());