Ajax超时不工作且不显示“超时”状态

时间:2013-06-27 21:52:57

标签: javascript ajax timeout

我正在尝试在提交表单之前对其进行连接检查,单击该按钮时。我们的想法是查看一个Timeout请求“Timeout()...”,这个请求在此代码中尚未实现,并继续迭代Ajax,直到找到连接,因为有时在连接可能丢弃的字段中。当找到连接时,它将提醒用户,如果在提交后连接断开,将成功提交。以下是我到目前为止的情况:

function upload_prepformDiff() {
$.ajax({
        type: 'POST',
        url: './php/upload_prepform.php',
        timeout: 2000, //2 seconds, for testing purposes
        data: prepform,
        async: false,//Omitted now as of this post
        dataType: 'text',
        success: function() {
            alert("Your Prep form has been submitted.");
            window.top.location.replace('./');
        },

        error: function (xhr, status, error) {
            if(status == "timeout") {
                alert("Internet connection has been lost! Please wait until you are notified and do not continue.");
            } else {
                alert(status + " " + error);
            }
        }
});
};

问题是即使使用低超时值,我也不会收到“超时”状态消息,我会收到“错误”。所以它永远不会抛出我需要的超时错误和我得到的错误:错误:NETWORK_ERR:XMLHttpRequest异常101

所以ajax确实注意到没有连接,但这就是errorThrown显示的内容,而textStatus分别是(xhr,status,error)的“错误”。所以我在TRIED做的是做一些即兴创作并做一些类型的error.indexOf()处理Ajax中抛出的错误字符串,但这不起作用,也没有error.contains(“NETWORK_ERR”)或任何类型的正则表达式命令。有什么改进的想法或为什么我没有超时?谢谢!

1 个答案:

答案 0 :(得分:2)

猜猜这对你来说可能有点晚了,但不过......

如果您已指定

  

async as'false'

,超时属性将被忽略。

至于处理错误,您可以访问较早的SO问题: status of ajax or post request

希望这有帮助! :)