$.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"
);
Что мне не хватает?
Ответы
Ответ 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() }