如何将自定义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; } });