JQuery $ .post не работает должным образом - PullRequest
0 голосов
/ 13 апреля 2010

Не могу найти решение этой проблемы

У меня есть следующий код для события onclick тега a html:

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");
        }

Это код в моем действии AddVacation ShoppingCartController:

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

Сообщение работает так, как в тестовом объекте (Отпуск) заполняется соответствующими свойствами, такими как ServiceSupplier, ProductId, Name и т. Д. За исключением свойств поля «Мои комнаты», они не получают соответствующих значений. Есть идеи?

Ответы [ 3 ]

0 голосов
/ 13 апреля 2010

Rooms - это массив, поэтому вы должны назвать реквизиты linke Rooms [0] .NumberOfAdults, Rooms [1] .NumberOfAdults, чтобы связыватель моделей по умолчанию работал так, как вы ожидали.

0 голосов
/ 25 апреля 2011

Ваш код должен быть таким:

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. Просто проверьте это

0 голосов
/ 13 апреля 2010

Я считаю, что начиная с 1.4 функции AJAX JQuery гадят как ад. У меня есть скрипты, которые отлично работают в каждом браузере на любой платформе, за исключением Chrome в Linux. Я подал сообщения об ошибках на этот счет и до сих пор не получил ответа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...