2012-02-19 90 views
0

我在我的Ajax中有以下代码,它在时间用完时执行页面重载功能。让jQuery等待

if(time<=0) 
{ 
    $(".time_remaining").html("Reloading the page now."); 
    refresh(); 
} 

刷新()如下:

function refresh() { 
    $.ajax({ 
    type: 'POST', 
    url: 'index.php', 
    data: 'refresh=true', 
    timeout: 0, 
    success: function(data) { 
     $("#current_body").html(data); 
    }, 
    error: function (XMLHttpRequest, textStatus, errorThrown) { 
     $("#notice_div").html('Error contacting server. Retrying in 60 seconds.'); 
     window.setTimeout(update, 60000); 
    } 
}); 
}; 

有时代码没有更新,而它刷新,但具有相同的内容之前(内容每次都肯定是不同的)。我认为这可能是由于index.php工作不够快,但Ajax急于执行

$("#current_body").html(data); 

line。我可以做到这一点吗?Ajax会在发送数据和打印结果之间自动延迟?

+0

咦? index.php是什么意思“工作不够快”?直到页面完全下载后,“成功”回调才会运行。 – 2012-02-19 15:38:13

回答

2

success回调仅在之后触发服务器返回有效响应。

所以不,它与服务器速度无关。

+0

排序它,谢谢。这是针对代码中的一个错误,它实际上并没有改变其中一个阶段(最后阶段)的内容。感谢你对我的感觉。 – dplanet 2012-02-19 15:57:20

0

成功函数将等到ajax请求完成加载。您遇到的问题可能与缓存有关。在您的选项设置缓存:假的,它应该是好:)

/**编辑,以更有意义**/

0

尝试更新的index.php到 “的index.php T =?” +( new Date())。getTime()来查看是否导致可能导致它返回相同内容的任何缓存。

+0

cache:false会为你做。这不是问题 – gdoron 2012-02-19 15:58:59