$ .post vs $ .ajax

时间:2011-09-23 12:12:57

标签: asp.net ajax jquery asp.net-ajax

我正在尝试使用$ .post方法来调用Web服务,我已经使用$ .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"
);

我错过了什么?

4 个答案:

答案 0 :(得分:24)

它不起作用,因为在$.post方法中,您无法将请求的内容类型设置为application/json。因此,无法使用$.post调用ASP.NET PageMethod,因为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"
});

答案 1 :(得分:0)

这是另一种不使用ajax的方法。它使用post并返回一个json对象。

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

答案 2 :(得分:-1)

对于$ .post函数,第二个参数不应该在“”中。

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

答案 3 :(得分:-1)

尝试更改这样的帖子数据,

 {standardBagProductId: standardBagProductId.trim() }