AJAX只在IE中加载一次

时间:2011-10-19 15:33:12

标签: php javascript ajax

我无法弄清楚为什么下面的AJAX代码只会在我的php页面中加载一次IE中的信息,在所有其他浏览器中都可以正常工作。

   <script type="text/javascript">
var c=0;

function randomize(str)
{

if (str=="")
  {
  document.getElementById("dispeople").innerHTML="";
  return;
  } 
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("dispeople").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","randomize.php?q=" + Math.random(),false);
xmlhttp.send();

document.getElementById('txt').value=c;
c=c+1;
}

setInterval( "randomize()", 2000 );
</script>

我是使用AJAX的新手,并且已经研究过这个问题并实施了我能找到的所有解决方案,我们将非常感谢任何帮助。

更新,2011年10月21日

我已经检查了JQuery并实现了它,如果有人在这里有任何建议,我仍然遇到同样的问题是我目前正在使用的代码:

<script type="text/javascript">
var c=0;

$.ajaxSetup ({
    // Disable caching of AJAX responses
    cache: false
 });

   setInterval(function() {
     $.ajax({
     type: "GET",
     url: 'randomize.php?ck=' + (new Date()).getTime(), 
     cache: false,
        success: function(data) {

          $('#dispeople').html(data);
     }
     });
     },2000);


</script>

谢谢

3 个答案:

答案 0 :(得分:2)

我认为你的jquery代码很好。它发生的原因是浏览器缓存。尝试使用您的请求发送随机值并从php端返回time()以查看它是否实际调用了php脚本。

答案 1 :(得分:0)

请改为尝试:

setInterval( randomize, 2000 );

您还发送作为字符串。和代码的第一部分:

  if (str=="")
  {
    document.getElementById("dispeople").innerHTML="";
    return;//return, only run once....
  } 

答案 2 :(得分:0)

也许您之所以没有使用它,但我强烈建议您查看jQuery。该库会自动消除所有这些浏览器不兼容问题,因此您只需担心您的功能。