2013-05-08 32 views
2

我有以下的JSON調用,我想打電話給在控制器&方法接受JSON對象更新管窺:的JQuery的getJSON在MVC

<script type="text/javascript"> 
    function DoAjaxUpdate(btnClicked) { 
     btnClicked = $(btnClicked); 
     var $form = btnClicked.parents('form'); 
     var url = '@Url.Action("Remove")'; 


     $.getJSON(
      url, 
      $form.serialize(), 
     function() {     
      if (data.htmlPartialView != null) { 
       return $("#divPartialView").load(obj.htmlPartialView); 
      } 
     }); 

     return false; 
    } 
</script> 

不幸的是,這不是傳送數據正確,而是將其作爲查詢字符串追加到URL中,例如:http://www.myLink.com/MyController/Remove?dataID=1359&dataMember=1

請幫忙。謝謝

+0

** [檢查這個答案](HTTP:/ /stackoverflow.com/a/16245682/2007801)** – 2013-05-09 00:02:48

回答

1

這就是$("form").serialize()發生的情況。它將序列化表單上的所有內容並將其放在查詢字符串中。

只要您的Remove操作方法採用了原始視圖上的模型實例,那麼它將使用查詢字符串中的值進行轉換。

爲了將其作爲JSON,你不得不使用JSON.stringify()

JSON.stringify($form.serialize()) 
+0

我更新$ form.serialize()爲JSON.stringify($ form.serialize()),但似乎仍然有相同的結果。我是否需要其他更新?我錯過了什麼嗎? – DAK 2013-05-08 22:12:24

+0

@Dak嗯,它一定是這種情況,是否有任何傷害,它是查詢字符串? – mattytommo 2013-05-08 22:14:51

+0

我收到一個404錯誤,因爲沒有名爲「刪除」的視圖?我只是想讓這個函數調用ActionMethod「Remove」並用更新的數據刷新「divPartialView」中的局部視圖。 – DAK 2013-05-08 22:21:05

0

回調需要參數,如:

$.getJSON(
     url, 
     $form.serialize(), 
     function (obj) {     
      if (obj.htmlPartialView) { 
       $("#divPartialView").load(obj.htmlPartialView); 
     } 
    }); 

順便說一下,如果(obj.htmlPartialView )相同if(data.htmlPartialView!= null)

0

您正在致電getJSON它將數據作爲使用查詢字符串的GET請求發送。如果你想使用POST方法,使用(從jQuery網站):

$.post(url, data, function(data) { 
}); 

$.ajax({ 
    type: "POST", 
    url: url, 
    data: data, 
    success: success, 
    dataType: dataType 
}); 

的更多信息:http://api.jquery.com/jQuery.post/