2

我有以下 JSon 调用,我想在 Controller 中调用一个方法并接受 JSon 对象来更新部分视图:

<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

请帮忙。谢谢

4

3 回答 3

1

这就是$("form").serialize(). 它将序列化表单上的所有内容并将其放在查询字符串中。

只要您的Remove操作方法采用原始视图上的模型实例,它就会使用查询字符串中的值进行转换。

要将其作为 JSON 发送,您必须使用JSON.stringify()

JSON.stringify($form.serialize())
于 2013-05-08T21:57:20.323 回答
0

回调需要参数,如下所示:

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

顺便说一句,if (obj.htmlPartialView)if (data.htmlPartialView != null)相同

于 2013-05-09T08:33:25.500 回答
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/

于 2013-06-06T23:33:34.787 回答