我无法在AJAX请求的错误处理程序中获得正确的错误代码。每次发生错误时,它都会返回statusCode = 500.我尝试在我的服务中明确地将其设置为HttpContext.Current.Response.StatusCode = 403;
,但它仍然给我status = 500。
这就是我的AJAX请求的样子:
$.ajax({
type: "POST",
url: "Services/someSvc.asmx/SomeMethod",
cache: true,
contentType: "application/json; charset=utf-8",
data:"{}",
dataType: "json"
error: ajaxFailed
});
function ajaxFailed(xmlRequest) {
alert(xmlRequest.status + ' \n\r ' + //This is always 500.
xmlRequest.statusText + '\n\r' +
xmlRequest.responseText);
}
我在这里缺少什么?
答案 0 :(得分:1)
看起来你几乎就在那里,这是一个示例[WebMethod],它会抛出一个StatusCode 403。
[WebMethod]
public static string HelloWorld(string name)
{
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.StatusCode = 403;
return null;
}
这是调用jQuery代码。
$(document).ready(function ()
{
var jsonRequest = { name: "Zach Hunter" };
$.ajax({
type: 'POST',
url: 'Demo.aspx/HelloWorld',
data: JSON.stringify(jsonRequest),
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (data, text)
{
$('#results').html(data.d);
},
error: function (request, status, error)
{
$('#results').html('Status Code: ' + request.status);
}
});
});
如果您没有返回方法签名中指定的值,则会返回状态代码500.
答案 1 :(得分:0)
错误(jqXHR,textStatus,errorThrown)
请求失败时要调用的函数。该功能收到 三个参数:jqXHR(在jQuery 1.4.x,XMLHttpRequest中)对象,a 描述发生的错误类型的字符串和可选项 异常对象,如果发生了一个。第二个可能的值 参数(除了null)是“超时”,“错误”,“中止”和 “parsererror”。发生HTTP错误时,errorThrown会收到 HTTP状态的文本部分,例如“未找到”或“内部” 服务器错误。“从jQuery 1.5开始,错误设置可以接受一个数组 功能。每个函数将依次调用。注意:这个处理程序 没有调用跨域脚本和JSONP请求。这是个 Ajax事件。
所以将代码更改为更像这样的代码:
$.ajax({
type: "POST",
url: "Services/someSvc.asmx/SomeMethod",
cache: true,
contentType: "application/json; charset=utf-8",
data:"{}",
dataType: "json",
error: ajaxFailed (jqXHR, textStatus, errorThrown)
});
function ajaxFailed(jqXHR, textStatus, errorThrown) {
alert(errorThrown + ' \n\r ' + textStatusText);
}
您可能还会找到this answer provides some additional信息。