我有一个我从ajax调用的WebMethod - 如果抛出错误,如果类型不是字符串/ int等,如何将其返回到ajax请求?
[WebMethod]
public static List<SchedulerResource> getResourcesOnCall(Guid instructionID, bool ignorePostcode, int pageIndex, int pageSize)
{
int totalRows = 0;
List<SchedulerResource> schedulerResourceDS = null;
try
{
schedulerResourceDS = NewJobBLL.GetResourcesOnCall(instructionID, ignorePostcode, pageIndex, pageSize, ref totalRows);
return schedulerResourceDS;
}
catch (Exception ex)
{
// what do I send back here?
}
return schedulerResourceDS;
}
这是我的ajax - 我希望.fail能够处理异常ex:
var requestResource = $.ajax({
type: "POST",
url: "NewJob.aspx/getResourcesDayShift",
data: JSON.stringify(objResource),
contentType: "application/json; charset=utf-8",
dataType: "json"
});
requestResource.done(function (data) {
if (data.d.length == 0) {
$("#lblEngineersDayShift").text("There are no Engineers available!");
}
else {
loadTableDS(data);
}
});
requestResource.fail(function (jqXHR, textStatus, errorThrown) {
alert('loading of Engineers failed!' + jqXHR.responseText);
});
编辑:我认为它不重复 - 我问如何从我的WebMethod返回statusCode(int)或statusText(string),如果它的类型是List&lt; SchedulerResource&gt;。因此我收到以下错误:
无法将类型'System.Net.HttpStatusCode'隐式转换为'System.Collections.Generic.List'
catch (WebException ex)
{
var statusCode = ((HttpWebResponse)ex.Response).StatusCode;
return statusCode;
}
答案 0 :(得分:1)
您可以让方法返回object
而不是List<SchedulerResource>
或者尝试将JSON字符串返回给客户端。这样您就可以灵活选择要返回的内容。
可以找到一个很好的例子here。
要将对象序列化为JSON,您可以使用JavaScriptSerializer
我不使用ASP.NET,但在ASP.NET MVC中,这看起来像这样:
您可以让方法返回JsonResult
而不是List<SchedulerResource>
return Json(schedulerResourceDS, JsonRequestBehavior.AllowGet);
然后,如果发生错误,您可以返回
Response.StatusCode = 500;
return Json(new {error = ex.Message}, JsonRequestBehavior.AllowGet);