我已将此保存为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变量包含的任何内容。
从某种意义上说,我需要在执行sendAjax(type,str)函数后每隔5秒执行一次(如在writ中):
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文件中,我将非常感激。
此致 泰勒
答案 0 :(得分:1)
您可以使用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 );
})
}
});