1

ajaxリクエストのエラー時に特定のメッセージを返したいです。

[WebMethod]
public static AjaxReturnObject SubmitWager(string token, string track, string race, string amount, string pool, string runners)
{
    try
    {
        var serviceReturn = Services.Account.SubmitWager("", track, race, pool, amount, runners);
        return new AjaxReturnObject(serviceReturn.AccountToken, serviceReturn.Payload);
    }
    catch (CustomServiceException<string> e)
    {
        throw new Exception(e.Message);
    }
}

デバッグでは、必要なときにキャッチにヒットすると言われていますが、jquery ajax呼び出し内のxhrを見ると、常に「リクエストの処理中にエラーが発生しました」と表示されます。

error: function (xhr, textStatus, errorThrown) {
            log(xhr, textStatus, errorThrown);
}

xhr.responseTextの下でajax呼び出しに戻るために希望のメッセージを取得するにはどうすればよいですか?

4

2 に答える 2

4

キャッチブロックのThrow代わりに試してください。Throw newXHR.responseTextを解析すると、例外メッセージが「メッセージ」に含まれます。例:

$.ajax({
       type: "POST",
       //... other parameters
       error: function(XHR, errStatus, errorThrown) {
             var err = JSON.parse(XHR.responseText);
             errorMessage = err.Message;
       }
});
于 2012-06-21T08:16:13.387 に答える
1

おそらく、より良いルートは、成功フラグをチェックするコードを使用してAJAXリクエストの成功コールバックを定義することです。

c#

[WebMethod]
public static AjaxReturnObject SubmitWager(string token, string track, string race,   string amount, string pool, string runners)
{
try
{
    var serviceReturn = Services.Account.SubmitWager("", track, race, pool, amount, runners);
    return new AjaxReturnObject(serviceReturn.AccountToken, serviceReturn.Payload);
}
catch (CustomServiceException<string> e)
{
    return new AjaxReturnObject(0, e.Message();
}
}

Javascript

$.ajax({
  ...
  success: function (data) {
    if (data.AccountToken == 0) {
      // There was an error 
      log(data.Payload);
    }
    else {
      // your code
    }
  }
});

サーバー側のコードでエラーをスローした場合に、関数が何かを返すかどうかわからないため、この代替手段を提供します。受け取っているエラーはクライアント側であり、errorコールバックは実際にリクエストを実行できるかどうかを示します。

于 2012-06-20T21:57:40.257 に答える