2013-04-04 80 views
0

这非常令人沮丧,我查看了一些示例,但仍然无法接收服务器上的任何数据。我有以下的JS将JSON绑定到模型MVC3

var checkoutModel = { }; 
$('form#card input').each(function() { 
      var id = $(this).attr("id") 
      var value = $(this).val(); 
      checkoutModel[id] = value; 
}); 

        $.ajax({ 
         url: "/checkout", 
         type: 'post', 
         dataType: 'json', 
         data: JSON.stringify(checkoutModel), 
         contenttype: 'application/json; charset=utf-8', 
         error: function (xhr) { 
          alert("error: " + xhr); 
         }, 
         success: function (data) { 
          alert(data); 
         } 
        }); 

的CheckoutController的行动看起来是这样的(这里的/结帐映射到结帐/订单信息)

[HttpPost] 
    [Authorize] 
    public virtual JsonResult OrderInfo(CheckoutModel checkoutModel) 

但在服务器上我checkoutModel的属性始终是NULL。

任何想法,我哪里出错了?

感谢

+0

** [请点击这里](http://stackoverflow.com/a/15794247/2007801)** – 2013-04-04 04:25:45

回答

0

我使用类似下面这样:

假设你CheckoutModel有Id和Value属性类似

public Int32 Id {get;set} 
public string Value {get;set} 

在你的Ajax

var checkoutModel = { }; 
checkoutModel.Id = 1234; 
checkoutModel.Value = "This is a Value"; 

    $.ajax({ 
    type: "POST", 
    url: "Your Controller URL", 
    data: checkoutModel , 
    traditional: true, 
    success: function (data) { 
       alert(data); 
    }, 
    error: function (xhr) { 
    alert("error: " + xhr); 
    }, 
    dataType: 'json' 
}); 

那么你的控制器

public JsonResult OrderInfo(CheckoutModel checkoutModel) 
{ 
// int id = checkoutModel.Id; result : 1234 
// string value = checkoutModel.Value; result : "This is a Value" 
} 

问候

+0

谢谢!只是不得不添加“传统”,而不是JSON字符串:) – Paul 2013-04-04 02:33:44

+0

您的欢迎:) – BizApps 2013-04-04 02:36:24