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可能不会直接与之交互,最好提及这一点。