212

の魔法を使っている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); }
   });

});

タイムアウトでもっと作業する方法を知っている人はいますか?

4

1 に答える 1

364

タイムアウトが発生したときにエラー イベント ハンドラが 3 つの引数 (xmlhttprequest、textstatus、および message) を取る場合、ステータス引数は「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' のテキストステータスがエラー ハンドラに返されます。

お役に立てれば!

于 2010-08-22T22:26:07.320 に答える