我想在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中查看xhr时,ajax会调用它总是说&#34;处理请求时出错。&#34;
error: function (xhr, textStatus, errorThrown) {
log(xhr, textStatus, errorThrown);
}
如何在xhr.responseText下收到我想要的回复ajax调用的消息?
答案 0 :(得分:4)
在catch块中尝试Throw
而不是Throw new
。一旦你解析XHR.responseText,异常消息将包含在“消息”中
例如:
$.ajax({
type: "POST",
//... other parameters
error: function(XHR, errStatus, errorThrown) {
var err = JSON.parse(XHR.responseText);
errorMessage = err.Message;
}
});
答案 1 :(得分: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
回调实际上是指是否可以发出请求。