0

jqueryを使用してこのajax呼び出しを行っていますが、クロムスローで

Uncaught SyntaxError: Unexpected token : 

と Mozilla スロー

SyntaxError: invalid label
200: function(){alert(200);},

これが私のコードです。私が間違っているのはどうもありがとうございます。

UPDATEそれは今動作します私は成功の機能とステータスを混合していました間違いをお詫びします

function servletCaller()
{    
try 
{                
    $.ajax(
    {url:'deleteImageHelper.do',dataType: 'json',context: document.body,
    success: function(data){},
    statusCode:
    {
      200: function(){alert(200);},
      404: function(){alert(404);},
      500: function(){alert(500);}
    }
    });         
 }
 catch(Exception){alert(Exception);}
}
4

3 に答える 3

3

きれいにフォーマットされたコードを持つことは報われます。これがまさにその理由です。

読み取り可能な形式にフォーマットされた後のコードは次のとおりです。

function servletCaller()
{    
    try 
    {                
        $.ajax(
        {
            url: 'deleteImageHelper.do',
            dataType: 'json',
            context: document.body,
            success: function(data)
            {
                statusCode:
                {
                    200: function(){alert(200);},
                    404: function(){alert(404);},
                    500: function(){alert(500);}
                }
            }); //This ');' is misplaced. It should be on the next line
        } //Need a ); here
    } catch(Exception) { alert(Exception); }
}

私のコメントでわかるように);、間違った}. コードがきれいにフォーマットされたので、問題を簡単に見つけることができます。

さらに、成功関数のそのコード ブロックは実行されません。おそらく次のようなものにしたいでしょう:

var statusCodeCallbacks = {
    200: function(){alert(200);},
    404: function(){alert(404);},
    500: function(){alert(500);}
};

//assuming statusCode is found at data.statusCode
statusCodeCallbacks[data.statusCode](); //You still need to handle the case that you get a status code that isn't in your object.

statusCodeCallbacksは静的であるため、パフォーマンスを向上させるために、関数の外に移動することもできますsuccess

statusCodeCallbacks別のユーザーが投稿したように、この AJAX リクエストのステータス コードを使用してオブジェクトから関数を実行している場合completeは、success. さらに良いことに、とは非推奨で.always()あるため、$.ajax()呼び出し自体で使用します。successcomplete

于 2013-08-22T13:15:37.310 に答える