$.post与$.ajax的区别

16

我正尝试使用$.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个回答

25

由于您在$.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"
});

我最近遇到了完全相同的问题,这是正确的解决方案。 - asawyer

0

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

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

简要描述一下您发布的代码是做什么的。 - Whitecat
你应该在答案中添加描述。 - Whitecat

-1

对于 $.post 函数,第二个参数不应该用引号包裹。

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

-1
尝试将您的帖子数据更改为以下内容:
 {standardBagProductId: standardBagProductId.trim() }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接