mic*_*osa 0 php ajax jquery caching
我有一个页面,我有时需要异步检查服务器,看看页面的状态是否是最新的(基本上是Live或Offline).您将看到我有一个函数,其中var live在页面最初加载时设置.然后,我向服务器发出ajax请求,以检索live的状态是true还是false.我将初始实时变量与新返回的数据json对象进行比较.如果它们是相同的我什么也不做,但如果有不同我应用一些CSS类.我用setTimeout递归运行它(是否有更好的方法来递归执行此操作?).
我的问题:data.live不会从它运行的初始时间改变,即使它在数据库中发生了变化.我知道我的mysql正在工作,因为它在初始加载时重新调整了正确的值.这似乎是一个缓存问题.
任何帮助是极大的赞赏.
function checkLive() {
var live = <?=$result["live"]?>;
$.ajax({
type: 'get',
url: '/live/live.php',
dataType: 'json',
success: function(data) {
console.log('checking for updates... current:' + data.live);
if (data.live == live) {
return;
} else {
var elems = $('div.player_meta, object, h3.offline_message');
if (data.live == '1') {
elems.removeClass('offline').addClass('live');
} else {
elems.addClass('live').addClass('offline');
}
}
}
});
setTimeout(function() { checkLive() } ,15000);
}
checkLive();
Run Code Online (Sandbox Code Playgroud)
使用cache选项$.ajax()将URL缓存添加到URL,如下所示:
$.ajax({
type: 'get',
url: '/live/live.php',
dataType: 'json',
cache: false,
//success, etc.
});
Run Code Online (Sandbox Code Playgroud)
如果这不解决它...看看firebug,看看是否正在发出请求(它应该在此之后肯定),如果它仍然是旧值,则问题是PHP,而不是JavaScript.
与此问题无关,只是一个侧面提示:如果您不需要参数,可以跳过匿名函数调用,这个:
setTimeout(function() { checkLive() } ,15000);
Run Code Online (Sandbox Code Playgroud)
可以只是:
setTimeout(checkLive, 15000);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1030 次 |
| 最近记录: |