Javascript 通过Ajax调用的轮询机制

Javascript 通过Ajax调用的轮询机制,javascript,ajax,polling,Javascript,Ajax,Polling,我需要添加轮询机制来通过我的网页调用web服务。为此,我尝试在javascript页面中使用ajax调用。我对ajax和javascript非常陌生。我写了下面的代码 <html> <head> <script language="JavaScript" type="text/javascript"> function pollServerForNewMail() { setTimeout(function()

我需要添加轮询机制来通过我的网页调用web服务。为此,我尝试在
javascript
页面中使用
ajax
调用。我对
ajax
javascript
非常陌生。我写了下面的代码

<html>
<head>
    <script language="JavaScript" type="text/javascript">
         function pollServerForNewMail() {
            setTimeout(function(){
            $.ajax({ url: "server", success: function(data){
                alert("TEST");
                poll();
            }, dataType: "json"});
        }, 10000);
</script>
</head>
<body>

</body>
</html>

函数pollServerForNewMail(){
setTimeout(函数(){
$.ajax({url:“服务器”,成功:函数(数据){
警报(“测试”);
poll();
},数据类型:“json”});
}, 10000);
我需要的是每10秒钟启动一次警报测试。任何人请帮我

我将用我的两个jsp文件编辑这篇文章

index.jsp文件

<html>
    <table style="width:100%;text-align:center;'">
<tr>
<td style="text-align:center;width:100%">                               
<a href="polling.jsp?reset=true"><img src="images/import.png" /></a>
</td>
</tr>
</table>
</html>

polling.jsp文件

         <html>
            <head>
                <script language="JavaScript" type="text/javascript">
                     function pollServerForNewMail() {
                        setTimeout(function(){
                        $.ajax({ url: "server", success: function(data){
                            alert("TEST");
                            poll();
                        }, dataType: "json"});
                    }, 10000);
}
        pollServerForNewMail() ;  

          </script>
            </head>
            <body>
       </body>
        </html>

函数pollServerForNewMail(){
setTimeout(函数(){
$.ajax({url:“服务器”,成功:函数(数据){
警报(“测试”);
poll();
},数据类型:“json”});
}, 10000);
}
pollServerForNewMail();

谢谢

设置超时
只会触发计时器一次

使用
setInterval
每X秒执行一次代码:

function pollServerForNewMail() {
    setInterval(function(){
        // Code in this function will run every 10 seconds

        $.ajax({ url: "server", success: function(data){
            alert("TEST");
            poll();
        }, dataType: "json"});
    }, 10000);
}

我通过如下更改polling.jsp文件解决了我的问题。我将添加我的解决方案

  <html>
    <head>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
        <script>
            var set_delay = 5000,
                    callout = function () {
                        $.ajax({
                            /* blah */
                        })
                                .done(function (response) {
                                   alert("TEST");
                                })
                                .always(function () {
                                    setTimeout(callout, set_delay);
                                });
                    };
            callout();
        </script>
    </head>
    <body>

    </body>
    </html>

var set_延迟=5000,
调用=函数(){
$.ajax({
/*废话*/
})
.完成(功能(响应){
警报(“测试”);
})
.always(函数(){
设置超时(调出、设置延迟);
});
};
标注();

我不理解您的问题,我的意思是:一旦您从服务器端应用程序返回一个值,js就会发出警报。实际上,我需要通过这个ajax调用调用一个端点。应该通过这个ajax调用每隔3分钟调用一次端点。那么,您到底有什么问题?在代码中,我看到的唯一问题是y在运行另一个请求之前,我们的请求必须返回一个值,因此如果您的请求记录时间超过10秒,它将“去同步”我有两个jsp文件。从index.jsp文件我调用polling.jsp文件。我需要每10秒显示一次警报测试。它应该首先在polling.jsp页面加载时显示。但是我厌倦了上面的代码,它不起作用。因此,请帮我解决问题,然后你还应该从polling.jsp添加代码。如果请求没有收到response before the esthed time?与作者的方法几乎相同,但他阻止了请求堆栈,因为他在上一个端点运行一个新的ajax。您可以轻松地将其更改回setTimeout,并在ajax返回后再次调用该函数,但这不是我理解作者的方式。我使用了setTimeout。但它没有显示alert至少一次。实际上,我需要首先在页面加载时显示警报。每10秒后,警报应该会显示一次。你知道它为什么没有在页面加载时调用警报吗。我只是将函数名放在脚本标记中,以便在页面加载时调用该函数。将整个html页面添加到问题中
polling.jsp
有一个未命中在pollServerForNewMail函数的结尾处键入
}