1. ホーム
  2. javascript

$.postと$.ajaxの違い?

2023-09-30 01:12:54

質問

dataパラメータに関して、何が違うのか知っている人がいれば教えてください。

私は $.post メソッドで $('#myform').serialize() をデータパラメータとして受け取り、動作します。

を使って同じことをやってみると $.ajax() のアプローチで同じことを試みても、データパラメータが正しく表示されないため、うまくいきません。

誰か違いを知っていますか、そして私が上記の .serialize ?

どのように解決するのですか?

オンラインドキュメントを読み直した結果、$.ajaxよりも$.postに固執することにしました。

$.ajaxメソッドのdataパラメータは、$.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

jqXHR.success(), jqXHR.error(), jqXHR.complete() コールバックメソッドは、jQuery 3.0から削除されました。 メソッドは、jQuery 3.0から削除されました。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/