如何使用jquery但使用javascript使ajax每隔(n)秒更新一次?

时间:2011-05-02 13:51:39

标签: javascript ajax

我正在尝试使用javascript轮询服务器每隔(n)秒如何使用javascript执行此操作?

4 个答案:

答案 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)&amp;&amp;(request.status == 200)){
                    var serverResponse = request.responseText;
                    var statCtrl=document.getElementById("countStatDiv");
                    statCtrl.innerHTML=serverResponse;
                    }
                    }
                </script>