フォームを送信する前にユーザーのインターネット接続を確認しようとしています。これにより、JavaScript検証関数がアラートをスローし、接続がない場合はfalseを返すことができます。
私が試した:navigator.onLine-FFでは機能しません(ブラウザが「オフラインモード」であるかどうかのみを確認します)
自分のサイトへのAJAXリクエスト:
$.ajax({
type: "GET",
url: "internet_test.php",
async: false, //trying to force a response before continuing
timeout:8000,
success: function(ret_text) {
if(ret_text == 'yes') {
return true;
} else {
alert("No Connection 1");
return false;
}
},
error: function(x, t, m) {
if(t==="timeout") {
alert("No Connection 2");
return false;
} else {
alert("No Connection 3"); //this is the one triggered
return false;
}
}
});
3番目のタイプのエラーのアラートが表示されますが、フォームはとにかく送信されます。エラーは、同期チェックを指定しようとしたという事実をオーバーライドし、AJAXがfalseを返す前にJavaScriptバリデーターが終了すると推測しています。
これを回避する良い方法はありますか?それを行うためのより良い方法は?
ありがとう!