0

我是 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 秒发生一次。

请帮忙。我在网上搜索了很多。但没能找到解决办法。

4

2 回答 2

2

因为您正在做的是 a GET,所以允许浏览器缓存它,因为 HTTPGET调用是幂等的(它们不会改变任何东西)。您可以通过以下方式防止这种情况:

  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) {
      }
    });
    
于 2013-07-12T11:06:09.403 回答
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/

于 2013-07-12T11:09:00.477 回答