如何在一段时间间隔后重复调用jquery中的特定URL?

时间:2013-07-12 11:02:23

标签: jquery

我是jquery的新手。我的目的是只向Web服务器发送一个请求以保持会话处于活动状态。我使用下面的代码从jsp页面调用特定的URL。

$.get('http://localhost/test.html',function(data,status) {
    },'html');

我使用setinterval以下列方式在每5秒钟内调用此url:

<script>

setInterval(
function ()
{
    //code goes here that will be run every 5 seconds.   
    $.get('http://localhost/test.html',function(data,status) {
    },'html');  
}, 5000);

</script>

当我加载页面时,我无法弄清楚为什么呼叫不会进行。注意:此调用应每5秒进行一次。

请帮助。我搜索了很多网络。但是无法找到解决方案。

2 个答案:

答案 0 :(得分:2)

因为您正在做的是GET,所以允许浏览器对其进行缓存,因为HTTP GET调用意味着是幂等的(它们不会改变任何内容) 。您可以通过以下方式阻止:

  1. 在服务器上使用缓存控制标头,或

  2. 使用POST代替GET

  3. 使用较长形式的ajax,您可以指定选项,并指定cache: false选项。

    FWIW,ajax的同等get来电,加上cache选项,是:

    $.ajax({
      url:     'http://localhost/test.html',
      cache:   false,
      data:    'html',
      success: function(data,status) {
      }
    });
    

答案 1 :(得分:1)

您的代码没有任何问题,如果它真的不起作用,它似乎是一个环境问题(缓存,缺失引用等)。我尝试你的代码并在回调中插入一个alert()调用,它似乎完美无缺。

您可能忘记引用jQuery或者没有分析网络流量。将此引用放在<head>标记中:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" ></script>

工作代码是:

setInterval(
function ()
{
    //code goes here that will be run every 5 seconds.   
    $.get('http://localhost/test.html',function(data,status) {
        alert('GET Request Happen!');
    },'html');  
}, 5000);

看看我的工作示例:http://jsfiddle.net/RjKjQ/