我正在尝试使用javascript轮询服务器每隔(n)秒如何使用javascript执行此操作?
答案 0 :(得分:5)
假设您使用的是jQuery:
var seconds = 5;
setInterval(function(){
$.ajax({
url: 'something.something',
data: 'something'
});
}, seconds * 1000)
没有jQuery:
var seconds = 5;
setInterval(function(){
some_ajax_function();
}, seconds * 1000)
或者@Felix建议如下:
var seconds = 5;
some_ajax_function(seconds);
function some_ajax_function(seconds){
..ajax
onsuccess: setTimeout(function(){some_ajax_function(seconds);},
seconds * 1000)
}
答案 1 :(得分:2)
使用以下功能很简单
window.setInterval(“yourfunctionWithAjaxRequestETC”,time_in_ms);});
享受:)
答案 2 :(得分:1)
首先,我们需要制作我们的ajax请求对象。我们需要考虑不同的浏览器。
var xmlhttp;
if (window.XMLHttpRequest)
{
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{
// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
现在,我们将编写我们的函数来发送请求
function askData(){
xmlhttp.open("GET","myinfosource.php",true); // opens a Get request to the url myinfosource.php, and sets the request to asynchronuous.
xmlhttp.send(); //sends the request
}
现在,让我们编写一个事件处理程序,在信息返回时更改HTML。
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200) //if we reveived data (readystate 4 means that information was received. status 200 is the status of the HTTP request, where 200 means 'ok'.
{
//insert data into the div you want.
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
}
}
最后,我们在我们编写的第一个函数上设置一个间隔,使其每隔x秒运行一次。
setInterval('askData',10000);
这将刷新您的数据。
我希望您现在看到为什么大多数人使用jquery等框架来使用AJAX。 js框架的一个主要优点是它们可以解决浏览器不兼容问题,因此开发人员可以专注于手头的任务。
答案 3 :(得分:0)
我假设在web.xml中配置了一个带有URL模式 / UpdateCount 的servlet来提供动态数据/内容,并且在其中有一个div元素 countStatDiv jsp页面。
以下代码使用GET方法每30秒刷新/更新 countStatDiv 的内容,并且可以根据需要更改变量秒值:
<script>
var request;
var seconds=30;
function getRequestObject(){
setInterval(function() {sendRequest();},seconds*1000);
if (window.ActiveXObject){
return (new ActiveXObject("Microsoft.XMLHTTP"));
} else if (window.XMLHttpRequest){
return(new XMLHttpRequest());
} else {
return (null);
}
}
function sendRequest(){
request = getRequestObject();
request.onreadystatechange = handleResponse;
request.open("GET", "../UpdateCount", true);
request.send(null);
}
function handleResponse(){
if((request.readyState == 4)&&(request.status == 200)){
var serverResponse = request.responseText;
var statCtrl=document.getElementById("countStatDiv");
statCtrl.innerHTML=serverResponse;
}
}
</script>