2012-02-07 17 views
4

「エラー」オプションが設定されたJQuery Ajaxコールを実行します。私の「エラー」メソッドでは、通常のHTTP 500とは違ってHTTP 408を扱いたいと思っています。JQuery ajaxでは、HTTP 408エラーを正しく処理するにはどうすればよいですか?

問題は、jxhr.statusCodeが0で、ステータス値が単に「エラー」です。しかし、火かき棒では、サービスが状態コード408を返したことが分かります。

なぜjxhr.statusCodeは0ですか? HTTP 408エラーを識別する別の方法はありますか?

次のように私のエラーハンドラのコードが見えます(408エラーのコードは、単に「他の」ブロックに続く):

error: function (jxhr, status, error) { 
var $message = element.next().find('.loadmask-msg-label'); 
if (jxhr.status == 401) 
    $message.html(settings.unauthorizedMessage); 
else if (jxhr.status == 408) 
    $message.html(settings.timeoutMessage); 
else 
    $message.html(settings.errorMessage); 

答えて

3

問題はFIREFOXでした。 Firefox以外のブラウザーでは、状況コードは408です.Firefoxでは、状況コードは0であり、応答ヘッダーは戻されません。また、Firefoxは408のレスポンスのために10回再リクエストされているようですが、理由はわかりません。これはHTTP 408の応答のみです。

最後に、カスタムヘッダーでHTTP 500エラーを返さなければなりませんでした。代わりに408のセクション:

+2

私はこの問題も遭遇しました。それ以来、私はバグレポートを開いています:https://bugzilla.mozilla.org/show_bug.cgi?id=907800 –

+0

Firefoxの408の処理は、それが拒否するという点ではまだ間違っているようです状態コード0であり、408を引き起こす最初の要求に対する要求の解析がない。同じURLへのエスティメーションは、リクエストが408で拒否されます。 – hvrauhal

3

のjQueryによると、あなたがこれを行う必要があります。

enter image description here

$.ajax({ 
    statusCode: { 
    404: function() { 
     alert('page not found'); 
    } 
    } 
}) 

;

+0

いや:(

汚れた、私は私のコードはまだ0になり怖い?あなたの代わりに、コードのテキストをチェックすることで検討しましたセクション:( – willem

+0

@willem –

+0

私がやりました「ステータス」テキストが「エラー」で、「エラー」テキストが「」でした。他に何がチェックされているか分かりません:( – willem

関連する問題