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);
            }
        }
    });
}

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

相关文章

IE6是一个非常老旧的网页浏览器,虽然现在很少人再使用它,但...
PHP中的count()函数是用来计算数组或容器中元素的个数。这个...
使用 AJAX(Asynchronous JavaScript and XML)技术可以在不...
Ajax(Asynchronous JavaScript and XML)是一种用于改进网页...
本文将介绍如何通过AJAX下载Excel文件流。通过AJAX,我们可以...
Ajax是一种用于客户端和服务器之间的异步通信技术。通过Ajax...