$.post 与 $.ajax

Posted

技术标签:

【中文标题】$.post 与 $.ajax【英文标题】:$.post vs $.ajax 【发布时间】:2011-11-23 15:11:09 【问题描述】:

我正在尝试使用 $.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"
);

我错过了什么?

【问题讨论】:

【参考方案1】:

它不起作用,因为在您的$.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"
);

【讨论】:

我最近遇到了同样的问题,这是正确的解决方案。【参考方案2】:

这是另一种不使用 ajax 的方法。它使用 post 并返回一个 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() 

【讨论】:

以上是关于$.post 与 $.ajax的主要内容,如果未能解决你的问题,请参考以下文章

jQuery中的Ajax以及请求函数

初识AjaxAjax的基本用法

教你怎么用ajax来进行交互(入门必看)!!!

AJAX中的同步加载与异步加载

Ajax JS

javascriptajax 基础 --本文转载