ボタンがクリックされたときに、フォームが送信される前にフォームの接続チェックを実行しようとしています。アイデアは、このコードではまだ実装されていない 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);
}
}
});
};
問題は、タイムアウト値が低くても、「タイムアウト」ステータス メッセージが表示されず、「エラー」が表示されることです。したがって、必要なタイムアウトエラーがスローされることはなく、次のエラーが発生します: Error: NETWORK_ERR: XMLHttpRequest Exception 101
したがって、ajaxは接続がないことに気づきますが、それはerrorThrownが示すものであり、textStatusはそれぞれ(xhr、status、error)の「エラー」です。だから私が試したのは、少し即興で行い、Ajaxでスローされたエラー文字列を何らかのタイプのerror.indexOf()で処理することでしたが、それは機能せず、error.contains("NETWORK_ERR")または任意のタイプの正規表現コマンド。これを改善するためのアイデア、またはタイムアウトが発生しない理由はありますか? ありがとう!