Jquery 如何从webmethod返回错误?

Jquery 如何从webmethod返回错误?,jquery,asp.net,webmethod,Jquery,Asp.net,Webmethod,如何在用WebMethod修饰的aspx页面方法中返回错误 示例代码 $.ajax({ type: "POST", url: "./Default.aspx/GetData", data: "{}", contentType: "application/json; charset=utf-8", dataType: "json", success: AjaxSucceeded, error: AjaxFailed }); [WebMeth

如何在用
WebMethod
修饰的aspx页面方法中返回错误

示例代码

$.ajax({
    type: "POST",
    url: "./Default.aspx/GetData",
    data: "{}",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: AjaxSucceeded,
    error: AjaxFailed
});

[WebMethod]
public static string GetData()
{

}

如何从webmethod返回错误?因此,可以使用jquery错误部分来显示错误详细信息。

结果页的http状态代码(4xx-用户请求错误,5xx-内部服务器错误)指示错误。我不知道asp.net,但我想你必须抛出一个异常或类似的东西。

我不知道是否有更具体的
WebMethod
方法,但在asp.net中,你通常只需要为你的用户设置状态码。大概是这样的:

Response.Clear();
Response.StatusCode = 500; // or whatever code is appropriate
Response.End;

使用标准错误代码是向使用HTTP的客户端通知错误的适当方式。在结束响应之前,您还可以
response.Write()
任何要发送的消息。这些格式的标准化程度要低得多,因此您可以创建自己的格式。但是,只要状态代码准确地反映了响应,您的JavaScript或使用该服务的任何其他客户端都会理解错误。

只要在PageMethod中抛出异常,并在AjaxFailed中捕获它即可。诸如此类:

function onAjaxFailed(error){
     alert(error);
}

但这是否会将页面详细信息(例外情况下)透露给客户端?在错误页面(或您正在使用的框架)上定义。通常情况下,您只会显示一条非常通用的错误消息。抛出异常会按照OP的要求执行,方法是将异常详细信息传递给错误函数。但是,在部署时,除非web.config中设置了
customErrors
元素,否则这些错误只会显示为一般错误(即“内部服务器错误”),无法向客户端发送有用的消息并在Error函数中捕获它。那么
响应
对象从何而来?用户的webmethod正在返回一个字符串。@OmegaMan:它不是在web方法中的
HttpContext.Current
,而是在ASP.NET中的其他地方?是的,它包含在该全局变量中
WebMethod
s可能不会直接与之交互,最好提及这一点。