【发布时间】:2011-05-04 09:23:13
【问题描述】:
我有这段代码从 mysql DB 请求一些文件夹信息:
function gotoDir(pmcat_id, pcat_id){
$('#slideshowContainer').html('<img class="loader" src="/javascript/ajax-loader.gif">');
$.post("/publish/includes/content.includes/functions.slideshow.php",
{ updateSlideshowDir: 1, pmcat_id: pmcat_id, pcat_id: pcat_id },
function(data){
$('#pageSlideshow').html(data.content);
}, "json"
);
}
有时,由于互联网连接不良,发布请求会超时。是否可以在 $.post() 上设置超时检查?例如:如果 $.post() 使用超过 X 毫秒,则重新加载请求。
更新:看起来我找到了解决方案:
function gotoDir(pmcat_id, pcat_id){
$('#slideshowContainer').html('<img class="loader" src="/javascript/ajax-loader.gif">');
$.ajax({
type:"post",
url:"/publish/includes/content.includes/functions.slideshow.php",
data: { updateSlideshowDir: 1, pmcat_id: pmcat_id, pcat_id: pcat_id },
dataType: "json",
success:function(data) {
if (data == null){
alert('ajax failed. reloading...');
gotoDir(pmcat_id, pcat_id);
} else {
$('#pageSlideshow').html(data.content);
}
}
});
}
这是一种可行的方法吗? :S
【问题讨论】:
-
不,这不行,因为如果数据 var 等于 null 并不意味着请求已超时,如果 functions.slideshow.php 实际上返回 null,这将导致无限请求!跨度>