当单击按钮时,我正在尝试在提交表单之前对其进行连接检查。我们的想法是查看尚未在此代码中实现的超时请求“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 Exception 101
所以 ajax 确实注意到没有连接,但这就是 errorThrown 显示的内容,而 textStatus 分别是 (xhr, status, error) 的“错误”。所以我尝试做的是做一些即兴创作并做某种类型的 error.indexOf() 处理 Ajax 中抛出的错误字符串,但这不起作用,error.contains("NETWORK_ERR") 或任何类型的正则表达式命令。有什么改进的想法或为什么我没有超时?谢谢!