这个问题已经问了很多遍了,但是我发现所有的解决方案都没有用。让我认为这可能是一个新问题,也许是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"); } });
没有工作。如果我只有一个传递给控制器的字符串,则可以。但是,一旦引入对象,便无法使其正常工作。
任何人都知道可能是什么问题。
非常感谢您对此进行调查!
您的代码看起来不错,它应该可以工作。我刚刚在一个新应用程序中测试了以下内容,没有出现问题。
模型:
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>