私はjQuery.ajax( settings )
の魔法を利用しています。
しかし、タイムアウト設定を多用した人はいますか。
基本的にはリクエストの現地時間を指定するためのものですが、タイムアウトになった場合に何かをトリガーすることはできますか?それとも単に応答を聞いて停止するのですか?
JQueryサイトを読むと、引数が渡されていないことがわかります。したがって、これは1つの機能を持つ単純な設定のように思えます。どちらでも構いません。
しかし、タイムアウトになった場合にアラートまたは何らかの機能を起動したいのですが。この場合、エラー設定がトリガーされないことがわかります。
これが私のスニペットです:
$("form#testform").submit(function(){
var allFormValues = $("form#testform").serialize();
$.ajax({
cache:false,
timeout:8000, // I chose 8 secs for kicks
type:"POST",
url:"someurl.php",
data:allFormValues,
error:function(){ alert("some error occurred") },
success:function(response){ alert(response); }
});
});
誰もがタイムアウトでもっと働く方法を知っていますか?
タイムアウトが発生したときにエラーイベントハンドラが3つの引数(xmlhttprequest、textstatus、およびmessage)を受け取ると、ステータスargは 'timeout'になります。
によると jQueryのドキュメント :
2番目の引数に有効な値(null以外)は、 "timeout"、 "error"、 "notmodified"、および "parsererror"です。
それに応じてエラーを処理できます。
私はこれを作成しました フィドル これはこれを実証します。
$.ajax({
url: "/ajax_json_echo/",
type: "GET",
dataType: "json",
timeout: 1000,
success: function(response) { alert(response); },
error: function(xmlhttprequest, textstatus, message) {
if(textstatus==="timeout") {
alert("got timeout");
} else {
alert(textstatus);
}
}
});
JsFiddleを使用すると、ajax呼び出しをテストできます。応答するまで2秒かかります。タイムアウト設定を1秒に設定したので、エラーが発生し、 'timeout'というテキストステータスがエラーハンドラに返されるはずです。
お役に立てれば!