我正在尝试使用AJAX并成功部署了一个简单的AJAX A-synced函数,但是当我改变它以使用回调方法时 - 突然,它需要很长时间才能加载(大约10 - 15分钟......)。 这是立即执行的功能:
function ajaxf() {
var xmlhttp;
xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200 && document.getElementById("icons")==null)
{
document.getElementById("text-12").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","http://some-url/ajax.php",true);
xmlhttp.send();
}
这里使用回调函数进行慢点迭代:
function ajaxf(url,cfunc) {
xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=cfunc;
xmlhttp.open("GET",url,true);
xmlhttp.send();
}
document.body.onscroll = function ajaxb() {
ajaxf("http://some-url/ajax.php",function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200 && document.getElementById("icons")==null)
{
document.getElementById("text-4").innerHTML=xmlhttp.responseText;
}
});
}
其他(也许)相关细节--ajax.php文件仅重532 B,在我的本地测试服务器上运行或多或少相同,第一个函数使用onscroll =" ajaxf()&#34 ;在身体标签内......
我的印象是AJAX会更加活泼???
答案 0 :(得分:0)
我解决了这个问题,感谢@ jasen的提示我已经放了一个console.log()并且能够看到滚动功能像@jfriend00所说的那样频繁了很多次。 最初,我认为通过放置" document.getElementById(" icons")== null "作为一个条件 - 该函数只会触发一次,但我当然错了,
所以解决方案是/是: 通过添加" document.body.onscroll = null; "在第一次执行后重置onscroll操作。在功能结束时。