小编典典

jQuery Ajax和ASP.NET MVC3导致空参数

ajax

这个问题已经问了很多遍了,但是我发现所有的解决方案都没有用。让我认为这可能是一个新问题,也许是ASP.NET MVC 3特有的问题。

我正在使用JQuery Ajax对ASP.NET MVC 3控制器进行简单调用。像这样

var addressInfo = { 
    Address1: "423 Judy Road",
    Address2: "1001",
    City: "New York",
    State: "NY",
    ZipCode: "10301",
    Country: "USA" 
};

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

控制器看起来像这样

[HttpPost]
public ActionResult Check(AddressInfo addressInfo)
{
    // Do something and return Json(something)
}

这不起作用,尽管它应该基于Scottgu
帖子的“
JavaScript和AJAX改进”部分

我已经尝试过许多不同的变化,例如:

var args = new Object();
args.addressInfo = { 
    Address1: "423 Judy Road",
    Address2: "1001",
    City: "New York",
    State: "NY",
    ZipCode: "10301",
    Country: "USA" 
};

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

然后将以上两种方法直接与JSON对象结合使用:

$.ajax({
    url: '/home/check',
    type: 'POST',
    data: args,
    success: function () {
        alert("success");
    },
    error: function () {
        alert("error");
    }
});

没有工作。如果我只有一个传递给控制器​​的字符串,则可以。但是,一旦引入对象,便无法使其正常工作。

任何人都知道可能是什么问题。

非常感谢您对此进行调查!


阅读 244

收藏
2020-07-26

共1个答案

小编典典

您的代码看起来不错,它应该可以工作。我刚刚在一个新应用程序中测试了以下内容,没有出现问题。

模型:

public class AddressInfo 
{
    public string Address1 { get; set; }
    public string Address2 { get; set; }
    public string City { get; set; }
    public string State { get; set; }
    public string ZipCode { get; set; }
    public string Country { get; set; }
}

控制器:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View();
    }

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

视图:

<script type="text/javascript">
    var ai = {
        Address1: "423 Judy Road",
        Address2: "1001",
        City: "New York",
        State: "NY",
        ZipCode: "10301",
        Country: "USA"
    };

    $.ajax({
        url: '/home/check',
        type: 'POST',
        data: JSON.stringify(ai),
        contentType: 'application/json; charset=utf-8',
        success: function (data) {
            alert(data.success);
        },
        error: function () {
            alert("error");
        }
    });
</script>
2020-07-26