2015-04-30 165 views
1

我有一個WebMethod,我從ajax調用 - 如果發生錯誤,如果該類型不是字符串/ int等,如何返回到ajax請求?如何獲取錯誤回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到能夠處理該異常前:

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); 
}); 

編輯:我不認爲這是重複的 - 我問如何如果它的類型爲List < SchedulerResource>,則從我的WebMethod返回statusCode(int)或statusText(string)。因此,我得到以下錯誤:

Cannot implicitly convert type 'System.Net.HttpStatusCode' to 'System.Collections.Generic.List'

catch (WebException ex) 
{ 
    var statusCode = ((HttpWebResponse)ex.Response).StatusCode; 

    return statusCode; 
} 

回答

1

可以使該方法返回objectList<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);