始终在ajax post的控制器中获取空值

时间:2013-10-07 09:48:14

标签: jquery ajax asp.net-mvc

我在我的视图中尝试了一个ajax帖子,如下所示(使用jQuery)。

完整解决方案Here.

 $(document).ready(function () {
                var kk = {
                    Address1: "423 Judy Road",
                    Address2: "1001",
                    City: "New York",
                    State: "NY",
                    ZipCode: "10301",
                    Country: "USA"
                };
                console.log(JSON.stringify(kk));
                $.ajax({
                    url: 'Check',
                    type: 'POST',
                    data: JSON.stringify(kk),
                    dataType:"json",
                    contentType: 'application/json; charset=utf-8',
                    success: function (data) {
                        alert(data.success);
                    },
                    error: function () {
                        alert("error");
                    }
                });
            });

并在控制器中接收它(该方法始终被调用)

public ActionResult Check(AddressInfo addressInfo)
        {
            return Json(new { success = true });
        } 

模型here, 但是当我尝试访问(断点检查)对象的属性(AddressInfo)时,它总是显示null值。我试过没有字符串化和字符串化。我现在正在学习MVC和初学者。请帮忙

4 个答案:

答案 0 :(得分:1)

请尝试以下代码:

return this.Json(new { success = true }, JsonRequestBehavior.AllowGet);

如果这不起作用,只需将请求参数从AddressInfo更改为控制器端的String。 这绝对有用!!

答案 1 :(得分:1)

这不起作用的原因是因为您使用ASP.NET MVC 2并且直到ASP.NET MVC 3才添加对JSON模型绑定的支持。

您可以将该功能添加到ASP.NET MVC 2中。 Phil Haack有一篇文章描述了这一点,最后给出了示例代码的链接:http://haacked.com/archive/2010/04/15/sending-json-to-an-asp-net-mvc-action-method-argument.aspx

答案 2 :(得分:0)

尝试以querystring方式传递数据:

    $(document).ready(function () {
        var data = "Address1=423 Judy Road&Address2=1001&City=New York&State=NY&ZipCode=10301&Country=USA";

        $.ajax({
            url: 'Check',
            type: 'POST',
            data: data,
            contentType: 'application/json; charset=utf-8',
            success: function (data) {
                alert(data.success);
            },
            error: function () {
                alert("error");
            }
        });
    });

答案 3 :(得分:0)

dataType中添加json Ajax并在addressInfo中传递data parameter

$.ajax({
    url: 'Check',
    type: 'POST',
    datatype:'json',
    data: {addressInfo:kk},
    success:function(data){
    ....
    ....
 });