2011-07-08 47 views
0

專家,JQuery的不歸一樣成功,失敗的任何狀態,已經完成

下面的函數成功將數據發送到Controller.cs(服務器)

var ajaxResponse = $.ajax({ 
         type: "post", 
         url: href, 
         dataType: 'json', 
         contentType: "application/json; charset=utf-8", 
         data: JSON.stringify(postData), 
         success: function (msg) { 
          alert("Success"); 
         } 
        }) 

但我不能夠從下面的方法獲取更新狀態

[AcceptVerbs(HttpVerbs.Post)] 
     public ActionResult SaveData(TabMasterViewModel postData) 
     { 
      string message = ""; 
      try 
      { 
       TabMasterViewModel update = new TabMasterViewModel(); 
       update = _tabmasterService.GetSingle(r => r.colID == postData.colID); 
       UpdateModel(update); 
       _tabmasterService.Update(update); 
       message = "Success"; 
      } 
      catch (Exception e) 
      { 
       message = e.Message; 
      } 
      return Content(message); 
     } 

竟被我d喜歡在失敗或成功時顯示消息。這下面的行不會執行

success: function (msg) { 
          alert("Success"); 
         } 

但我的服務器端代碼沒有任何錯誤執行。

請提供您寶貴的建議,

謝謝
Imdadhusen

回答

4

,而不是返回的ActionResult你應該返回JsonResult

例如

public JsonResult SaveData() { 
    return Json(new {success=true, msg="Saved ok"}); 
} 

那麼你的JS

success: function (msg) { 
          if(msg.success) 
           alert("Success"); 
         } 
+0

好的答案,我的投票+ – imdadhusen

1

您正在返回Content的結果,其中在JQuery的你所提到的dataType: 'json'。我建議你要麼從控制器返回JSON結果,要麼從jquery調用中移除dataType。 我不確定,請試試看。

1

在ajax腳本的發送行上找到Firebug的斷點。

在成功方法回調中在Firebug上找到了一個斷點。

在第一行操作方法中,在Visual Studio中找到一個斷點。

按照重現場景中的步驟,並在發送請求之前檢查在Firebug的對象,繼續打F8發送請求,檢查Net標籤頁中的螢火蟲,看看是否有發送請求與否。

如果它已發送,請檢查發佈的請求。

如果直到現在一切正常繼續在VS服務器端的過程,並檢查是否一切正常。

然後檢查Firebug的反應,看看是否沒有任何問題。

0

明顯的事情第一:你確定你的網址是有效的? (我想是的,因爲你說數據發送成功)。

您是否嘗試過監視ajax請求以查看您收到的http狀態? 不管怎樣,.ajax也有一個錯誤回調,你可以在請求失敗的情況下使用。

apropos:從你的回報功能去哪裏? 您必須將回復發送到輸出緩衝區才能到達客戶端。簡單返回將向客戶端發送空響應(但在這種情況下應該沒有關係,因爲.ajax成功回調應該在請求readyState 4 +狀態200時觸發)。

相關問題