2013-05-08 34 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/