Подтвердить что ты не робот

$.post против $.ajax

Я пытаюсь использовать метод $.post для вызова веб-службы, у меня это работает с использованием метода $.ajax:

$.ajax({
    type: "POST",
    url: "StandardBag.aspx/RemoveProductFromStandardBag",
    data: "{'standardBagProductId': '" + standardBagProductId.trim() + "' }",
    success: function(){
                 $((".reload")).click();
             },
    dataType: "json",
    contentType: "application/json"
});

Но когда я переношу тот же метод в метод $.post, он не будет работать:

$.post("StandardBag.aspx/RemoveProductFromStandardBag",
    "{'standardBagProductId': '" + standardBagProductId.trim() + "' }",
    function () { $((".reload")).click(); },
    "json"
);

Что мне не хватает?

4b9b3361

Ответ 1

Это не работает, потому что в вашем методе $.post вы не можете установить тип содержимого запроса application/json. Таким образом, невозможно вызвать ASP.NET PageMethod с помощью $.post, потому что для ASP.NET PageMethod требуется запрос JSON. Вам нужно будет использовать $.ajax.

Я бы просто изменил data, чтобы убедиться, что он правильно закодирован JSON:

$.ajax({
    type: "POST",
    url: "StandardBag.aspx/RemoveProductFromStandardBag",
    data: JSON.stringify({ standardBagProductId: standardBagProductId.trim() }),
    success: function() {
        $(".reload").click();
    },
    dataType: "json",
    contentType: "application/json"
});

Ответ 2

Это еще один способ сделать это, не используя ajax. Он использует пост и возвращает объект json.

data = {};
data.standardBagProductId = standardBagProductId.trim();
$.post("StandardBag.aspx/RemoveProductFromStandardBag", data , function(response){
    $(".reload").click();
},"json");

Ответ 3

для функции $.post второй параметр не должен находиться в "".

$.post("StandardBag.aspx/RemoveProductFromStandardBag",
    {'standardBagProductId': standardBagProductId.trim() },
    function () { $(".reload").click(); },
    "json"
);

Ответ 4

Попробуйте изменить свои данные для отправки,

 {standardBagProductId: standardBagProductId.trim() }