【发布时间】:2010-02-04 20:16:44
【问题描述】:
我有一些看起来像这样的 jQuery:
$.ajax({
type: "POST",
url: "/Customer/CancelSubscription/<%= Model.Customer.Id %>",
contentType: "application/json",
success: refreshTransactions,
error: function(xhr, ajaxOptions, thrownError) {
alert("Failed to cancel subscription! Message:" + xhr.statusText);
}
});
如果被调用的操作导致异常,它最终会被 Global.asax Application_Error 拾取,其中我有一些这样的代码:
var ex = Server.GetLastError();
if (Request.ContentType.Contains("application/json"))
{
Response.StatusCode = 500;
Response.StatusDescription = ex.Message;
Response.TrySkipIisCustomErrors = true;
}
else
{
// some other way of handling errors ...
}
当我执行执行 post 的脚本时,Request.ContentType 始终是一个空字符串,因此不会命中第一个 if 块。我应该在ajax“contentType”中添加一些其他值吗?或者我还有其他方法可以告诉asp.net内容类型应该是“application/json”吗?
澄清
我试图实现的目标是将异常消息传递回 ajax 错误事件。目前,即使绕过了 IF 块,错误事件也会正确地引发警告框,但消息是“未找到”。
如您所见,我正在尝试将异常消息设置为 Response.StatusDescription,我相信 ajax 错误中的 xhr.statusText 已设置为。
【问题讨论】:
标签: jquery asp.net-mvc ajax