2011-10-19 51 views
0

我不明白为什么下面的AJAX代码只会从我的php页面加载信息一次,在IE中,在所有其他浏览器中都没有问题。AJAX只在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> 

谢谢

+2

尝试使用jquery/mootools代替。它们很好地将原生浏览器的ajax功能包装到一个小包中,所以你的整个脚本可以折叠成4或5行代码......并且它们还补偿了浏览器之间的所有变化,所以你不会卡住与“if(ie)... else”monstrosities。 –

+0

谢谢我正在寻找使用jquery而不是现在 – pivot

回答

2

我认为你的jQuery代码是好的。它发生是因为浏览器缓存。尝试发送一个随机值与您的请求,并返回从PHP一侧的时间(),看看它是否实际上调用PHP脚本。

0

试试这个:

setInterval(randomize, 2000); 

还你一个重新发送没有任何内容作为字符串。和你的代码的第1部分:

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

谢谢,我试过setInterval作品,结束了删除你指的那一小部分代码,我也没有发送任何东西。仍然似乎是在IE中挂断。 – pivot

0

也许有你不使用它已经是一个原因,但我强烈建议检查出jQuery。该库会自动平滑所有这些浏览器不兼容问题,因此您只需担心的功能。

+0

谢谢,正如我所看到的JQuery,我仍然遇到同样的问题,使用下面的代码: – pivot

+0

pivot