微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ajax – 是否可以检查jQuery.post()的超时?

我有这个代码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 ms,请重新加载请求.

更新:看起来我发现了一个解决方案:

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,dataType: "json",success:function(data) {
            if (data == null){
            alert('ajax Failed. reloading...');
            gotoDir(pmcat_id,pcat_id);
        } else {
            $('#pageSlideshow').html(data.content);
        }
        }        
    });
}

这样做可行吗? :S

$.ajax具有完成您要求的所有功能
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",timeout: 500,// in milliseconds
        success: function(data) {
            // process data here
        },error: function(request,status,err) {
            if(status == "timeout") {
                gotoDir(pmcat_id,pcat_id);
            }
        }
    });
}

请注意,您不需要设置超时选项,除非您希望在要设置的特定时间后触发错误方法.

原文地址:https://www.jb51.cc/ajax/159862.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐