我正在尝试在提交表单之前对其进行连接检查,单击该按钮时。我们的想法是查看一个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”)或任何类型的正则表达式命令。有什么改进的想法或为什么我没有超时?谢谢!
答案 0 :(得分:2)
猜猜这对你来说可能有点晚了,但不过......
如果您已指定
async as'false'
,超时属性将被忽略。
至于处理错误,您可以访问较早的SO问题: status of ajax or post request
希望这有帮助! :)