$ .post和$ .ajax之间的区别?

Ed *_*gne 60 javascript ajax asp.net-mvc jquery serialization

好奇,如果有人知道数据参数的差异.

我有一个$.post方法,它采取$('#myform').serialize()我的数据参数和工作.

如果我使用该$.ajax()方法尝试相同,它不起作用,因为我的数据参数看起来不正确.

有谁知道差异和我可能会使用什么而不是上述.serialize

rah*_*hul 74

这篇文章对你有所帮助.

论坛链接

简而言之:

$.post( "/ajax", {"data" : json }) 
Run Code Online (Sandbox Code Playgroud)

相当于:

$.ajax({ 
  type: "POST", 
  url: "/ajax", 
  data: {"data": json} 
}); 
Run Code Online (Sandbox Code Playgroud)


epa*_*llo 45

这里的问题不是事实$.ajax()不起作用,这是因为你没有在Ajax请求中设置type参数,它默认为GET请求.数据通过查询字符串发送给get,如果你的后端希望它们作为post参数,它将不会读取它们.

$.post只是一个电话$.ajax(),只是与type集合.阅读文档,您将看到$.ajax()默认为GET,如上所述.

如果你转到jQuery文档中的jQuery.post页面,它会显示类型为set的$ .ajax请求.再次阅读文档.


Ed *_*gne 19

在重新阅读了一些在线文档之后,我决定坚持使用$ .post而不是$ .ajax.

$ .ajax方法的数据参数与$ .post方法有所不同,不确定究竟是什么,但存在差异.

我想使用$ .ajax的唯一原因是因为我希望能够处理事件并且没有意识到我可以使用$ .post这样做.

这就是我最终的结果

function GetSearchItems() {
    var url = '@Url.Action("GetShopSearchResults", "Shop", New With {.area = "Shop"})';
    var data = $("#ShopPane").serialize();
    // Clear container
    $('#shopResultsContainer').html('');
    // Retrieve data from action method
    var jqxhr = $.post(url, data);
    // Handle results
    jqxhr.success(function(result) {
        //alert("ajax success");
        $('#shopResultsContainer').html(result.ViewMarkup);
    });
    jqxhr.error(function() {
        //alert("ajax error");
    });
    jqxhr.complete(function() {
        //alert("ajax complete");
    });

    // Show results container
    $("#shopResultsContainer").slideDown('slow');
}
Run Code Online (Sandbox Code Playgroud)

JQuery 3.x

从jQuery 3.0开始,jqXHR.success(),jqXHR.error()和jqXHR.complete()回调方法被删除.您可以使用jqXHR.done(),jqXHR.fail()和jqXHR.always()代替.

var jqxhr = $.post(url, data);
// Handle results
jqxhr.done(function(result) {
    //alert("ajax success");
});
jqxhr.fail(function() {
    //alert("ajax error");
});
jqxhr.always(function() {
    //alert("ajax complete");
});
Run Code Online (Sandbox Code Playgroud)

https://api.jquery.com/jquery.post/

  • “jqXHR.success()、jqXHR.error() 和 jqXHR.complete() 回调方法从 jQuery 3.0 开始被删除。” - https://api.jquery.com/jquery.post/ (2认同)

dov*_*ove 12

您是否将此指定为数据参数.$.post只是一个$.ajax期待以下的速记.

$.ajax({
    type : 'POST',
    url : url,
    data : data,
    success : success,
    dataType : dataType
});
Run Code Online (Sandbox Code Playgroud)