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 new在 catch 块中。一旦你解析 XHR.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 回答