我已将其保存为 ajax.js 文件:
function sendAjax(type, str)
{
var xmlhttp;
if (str=="")
{
document.getElementById("txtResp").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
else
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("txtResp").innerHTML=xmlhttp.responseText;
}
}
switch(type)
{
case 'search':
xmlhttp.open('GET','mysql_process_search.php?q='+str,true);
break;
case 'add':
xmlhttp.open("GET","mysql_process_event.php?q="+str,true);
break;
}
xmlhttp.send();
}
基本上,我尝试使用内置的 setInterval() 函数来重复 URL 变量包含的任何内容。
从某种意义上说,我需要在调用 tfunction sendAjax(type,str) 后每 5 秒执行一次(如书面形式):
case 'add':
xmlhttp.open("GET","mysql_process_event.php?q="+str,true);
break;
}
xmlhttp.send();
我可以设置我在某个时间间隔内编写函数的位置:I.E.
setInterval( "sendAjax('message', '123')", 5000 );
sendAjax('message','123')
但是我的代码中有好几个地方写了这个函数,如果它包含在关键操作和 if 语句中,它就不会工作,因为它只会执行一次:
$('#searchbar').live('keyup',function() {
eInput = $(this).val();
if (eInput.length > 1) {
setInterval( "sendAjax('message', '123')", 5000 );
sendAjax('message','123')
}
});
//这个函数不起作用
如果有人可以帮助我修复最后一个函数,或者只是将 setInterval 包含在 Ajax.js 文件本身中,我将不胜感激。
问候, 泰勒
最佳答案
您可以使用 jQuery 更轻松地重写 function sendAjax(type, str)
(因为这似乎是您正在使用的:
function sendAjax(type, str, succ){ //where succ is the success callback
if (str=="")
{
$("#txtResp").empty();
return;
}
if(succ === undefined) { succ = null; }
switch(type)
{
case 'search':
$.ajax({type:"GET",
url: "mysql_process_search.php",
data: "q="+str,
success: succ
});
break;
case 'add':
$.ajax({type:"GET",
url: "mysql_process_event.php",
data: "q="+str,
success: succ
});
break;
}
}
然后做:
$('#searchbar').live('keyup',function() {
eInput = $(this).val();
if (eInput.length > 1) {
sendAjax('message','123', function(responseText){
$("#txtResp").html(responseText);
setInterval( function(){
sendAjax('message', '123', function(responseText){
$("#txtResp").html(responseText);
})
}, 5000 );
})
}
});
关于javascript - 如何使用 setInterval 从 ajax 页面本身重复 ajax 调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5968160/