如何将自定义exception消息返回给Ajax调用?

我想在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 e) { throw new Exception(e.Message); } } 

调试说当我需要它时会碰到我的捕获,但是当我在我的jquery中查看xhr时,ajax会调用它总是说“处理请求时出错”。

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

如何在xhr.responseText下获得我想要的消息来回到ajax调用?

也许最好的方法是使用检查成功标志的代码定义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 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是客户端, error回调实际上是指是否可以发出请求。

尝试只是Throw而不是在catch块中Throw new的东西。 一旦你解析XHR.responseText,exception消息将包含在“消息”中,例如:

 $.ajax({ type: "POST", //... other parameters error: function(XHR, errStatus, errorThrown) { var err = JSON.parse(XHR.responseText); errorMessage = err.Message; } });