小编典典

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

ajax

好奇是否有人知道关于data参数的区别。

我有一种$.post方法,将a $('#myform').serialize()作为我的数据参数即可工作。

如果我使用这种$.ajax()方法尝试相同的操作,则不会成功,因为我的数据参数似乎不正确。

有谁知道区别,我可能会用什么代替上面的.serialize


阅读 234

收藏
2020-07-26

共1个答案

小编典典

重新阅读一些在线文档后,我决定在$ .ajax上坚持使用$ .post。

$ .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');
}

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");
});

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

2020-07-26