JQuery $ .post无法正常工作

时间:2010-04-13 11:19:35

标签: jquery ajax asp.net-mvc json

似乎找不到解决此问题的方法

我在 a html标记的 onclick 事件中有以下代码:

AddVacationToCart(  
{  
ServiceSupplier:'Kiki',  
ProductId:'0;11968;0;0;187;1',  
Name:'Excelsior',  
NumberOfStars:'*****',  
TotalPrice:'1620.00',  
PriceLevelName:'Standard',  
Currency:'EUR',  
Status:'',  
StartDate:'2010-06-17',  
EndDate:'2010-06-24',  
NumberOfNights:'7',  
Rooms:[  
{  
NumberOfAdults:'2',  
NumberOfChildren:'0',  
ChildrenAges:[]  
}  
]  
},'0;11968;0;0;187;1');return false;

我也有这段代码:

function AddVacationToCart(vacation, id) {
            $.post("/ShoppingCart.mvc/AddVacation",
        vacation,
        function(data) {
            var div = $("div[id*=cartv" + id + "]");
            var removeFromCartHtml = "Adaugat";
            $(div).html(removeFromCartHtml);
        }, "json");
        }

这是我的ShoppingCartController AddVacation操作中的代码:

[AcceptVerbs(HttpVerbs.Post)]
        public ActionResult AddVacation(Vacation test)
        {
...
}

帖子的工作方式与(假期)测试对象一样,填充了相应的属性,如ServiceSupplier,ProductId,Name等。除了我的房间字段的属性外,没有得到相应的值。 任何想法?

3 个答案:

答案 0 :(得分:0)

我发现从1.4开始,JQuery的ajax函数就像地狱一样。我的脚本在每个平台上的每个浏览器中都能正常运行,但Linux上的Chrome除外。我已经提交了相关的错误报告,到目前为止没有收到回复。

答案 1 :(得分:0)

房间是一个数组,因此您必须将道具命名为linke Rooms [0] .NumberOfAdults,Rooms [1] .NumberOfAdults以使默认模型绑定器按预期工作。

答案 2 :(得分:0)

您的代码应该是这样的:

AddVacationToCart(  
{  
  ServiceSupplier:'Kiki',  
  ProductId:'0;11968;0;0;187;1',  
  Name:'Excelsior',  
  NumberOfStars:'*****',  
  TotalPrice:'1620.00',  
  PriceLevelName:'Standard',  
  Currency:'EUR',  
  Status:'',  
  StartDate:'2010-06-17',  
  EndDate:'2010-06-24',  
  NumberOfNights:'7',
  'Rooms[0].NumberOfAdults' :'2',  
  'Rooms[0].NumberOfChildren':'0',  
  'Rooms[0].ChildrenAges[0]': '18'

},'0;11968;0;0;187;1');return false;

由于ASP.NET MVC绑定规则。试试吧