我是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秒进行一次。
请帮助。我搜索了很多网络。但是无法找到解决方案。
答案 0 :(得分:2)
因为您正在做的是GET
,所以允许浏览器对其进行缓存,因为HTTP GET
调用意味着是幂等的(它们不会改变任何内容) 。您可以通过以下方式阻止:
在服务器上使用缓存控制标头,或
使用POST
代替GET
或
使用较长形式的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/