2013-06-26 96 views
0

我在jQuery中調用ajax調用時遇到問題。完成了這一百萬次後,我知道我在這裏錯過了一些非常愚蠢的事情。這裏是我做的Ajax調用javascript代碼:jQuery ajax調用似乎沒有做任何事情

function editEmployee(id) { 
     $('#<%= imgNewEmployeeWait.ClientID %>').hide(); 
     $('#divAddNewEmployeeDialog input[type=text]').val(''); 
     $('#divAddNewEmployeeDialog select option:first-child').attr("selected", "selected"); 
     $('#divAddNewEmployeeDialog').dialog('open'); 
     $('#createEditEmployeeId').text(id); 
     var inputEmp = {}; 
     inputEmp.id = id; 
     var jsonInputEmp = JSON.stringify(inputEmp); 
     debugger; 
     alert('Before Ajax Call!'); 
     $.ajax({ 
      type: "POST", 
      url: "Configuration.aspx/GetEmployee", 
      data: jsonInputEmp, 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function (msg) { 
       alert('success'); 
      }, 
      error: function (msg) { 
       alert('failure'); 
      } 
     }); 
    } 

這裏是要調用的嘗試我的CS代碼:

[WebMethod] 
    public static string GetEmployee(int id) 
    { 
     var employee = new Employee(id); 

     return Newtonsoft.Json.JsonConvert.SerializeObject(employee, Newtonsoft.Json.Formatting.Indented); 
    } 

當我嘗試運行它,我得到警報說說Before Ajax Call!。但是,我從來沒有收到一條提示success或提示failure。我確實進入了我的CS代碼,並在GetEmployee方法上放置了一個斷點。斷點確實發生了,所以我知道jQuery正在成功調用該方法。我逐步完成了該方法,並且執行得很好,沒有任何錯誤。我只能假設當jQuery ajax調用從調用返回時發生錯誤。

此外,我查看我的事件日誌只是爲了確保沒有發生ASPX錯誤。日誌中沒有錯誤。我也看了一下控制檯。沒有腳本錯誤。任何人有什麼想法我在這裏失蹤?

`

+0

嘗試使用「console.log(msg);」代替警報成功/失敗並查看瀏覽器控制檯日誌(在chrome上控制shift J,但所有最近的瀏覽器都有日誌)以查看是否記錄了msg。如果它顯示在日誌中,您可以點擊msg並展開它,看看它說什麼。 – Paul

+0

使用Fiddler來查看請求是否實際發生以及返回的內容。如果使用Chrome設置「引發時」進行異常處理。還要考慮將'$ .ajax'封裝到try/catch中,以便知道它是否直接失敗/查看失敗(現在不是你的情況)。 –

+0

不是ajax屬性'dataType',而不是'contentType'? –

回答

0

嘗試這個

function editEmployee(id) { 
    $('#<%= imgNewEmployeeWait.ClientID %>').hide(); 
    $('#divAddNewEmployeeDialog input[type=text]').val(''); 
    $('#divAddNewEmployeeDialog select option:first-child').attr("selected", "selected"); 
    $('#divAddNewEmployeeDialog').dialog('open'); 
    $('#createEditEmployeeId').text(id); 
    //var inputEmp = {}; 
    // inputEmp.id = id; 
    // var jsonInputEmp = JSON.stringify(inputEmp); 
    //debugger; 
    alert('Before Ajax Call!'); 
    $.ajax({ 
     type: "POST", 
     url: "Configuration.aspx/GetEmployee", 
     data: {id: id}, 
     // contentType: "application/json; charset=utf-8", 
     // dataType: "json", 
     success: function (msg) { 
      alert('success'); 
     }, 
     error: function (msg) { 
      alert('failure'); 
     } 
    }); } 
0

如果Ajax調用多年平均值而來的成功函數內部則問題是在CS代碼的DATAFORMAT。返回數據不得以適當的JSON格式。你應該會得到「500」錯誤,我猜。

嘗試以適當的JSON格式返回它。

相關問題