3

JavaScript で (JQuery を使用して) Ajax 要求を送信すると、キャッチできない内部サーバー エラーがスローされることがあります。ブラウザにエラーが表示されます。私は ajax 呼び出しを try - catch ブロックでラップしようとさえしました。Ajax エラーを処理するにはどうすればよいですか?

ここで編集 は私のコードです:

$.post('/multi/getGameStatus', function(data) {
    if(data && data.game) {
        settings.game = data.game;
        setStartRacePopupUI.call(this, data);
        // remove all racers
        removePlayers.call();
        for(var i=0;i<settings.game.players.length;i++) {
            var player = settings.game.players[i];
            var isme = (player.id == settings.playerId);
            addPlayer.call(this, player, isme, i);
        }

        if (settings.game.gameStatus == "OPEN") {
            setTimeout(refreshPlayers, refreshPlayersInterval, nextStatus);
        } else if(settings.game.gameStatus == "IN_GAME") {
            counterToGameStart = data.sts;
            gameFllow(nextStatus);
        }
    }
});

エラー ハンドラを使用しても、ページで JS エラーが発生する

4

2 に答える 2

4

http://api.jquery.com/jQuery.ajax/

... $.ajax() で使用されるコールバック名との利便性と一貫性のために、jqXHR は .error()、.success()、および .complete() メソッドも提供します。

jqXHR.success()、jqXHR.error()、および jqXHR.complete() コールバックは、jQuery 1.8 で非推奨になります。最終的な削除に備えてコードを準備するには、代わりに jqXHR.done()、jqXHR.fail()、および jqXHR.always() を使用してください。

// Assign handlers immediately after making the request,
// and remember the jqxhr object for this request
var jqxhr = $.ajax( "example.php" )
    .done(function() { alert("success"); })
    .fail(function() { alert("error"); })
于 2012-09-20T13:33:22.783 に答える
4
$.ajax({
  url:"myurl",
  data: {json:"data"},
  success: function(){//on success},
  error: function(){//called on error}
});

ajax api docsによるエラー コールバック: (疑わしい場合は api docs を参照してください)

error(jqXHR, textStatus, errorThrown)関数

リクエストが失敗した場合に呼び出される関数。関数は 3 つの引数を受け取ります。jqXHR (jQuery 1.4.x では XMLHttpRequest) オブジェクト、発生したエラーの種類を説明する文字列、およびオプションの例外オブジェクト (発生した場合) です。2 番目の引数 (null 以外) に指定できる値は、"timeout"、"error"、"abort"、および "parsererror" です。HTTP エラーが発生すると、errorThrown は「Not Found」や「Internal Server Error」などの HTTP ステータスのテキスト部分を受け取ります。jQuery 1.5 以降、エラー設定は関数の配列を受け入れることができます。各関数が順番に呼び出されます。注: このハンドラは、クロスドメイン スクリプトおよび JSONP リクエストでは呼び出されません。これは Ajax イベントです。

于 2012-09-20T13:38:29.567 に答える