data パラメーターに関して違いが何であるかを誰かが知っているかどうか興味があります。
データパラメータとして$.post
a を取り、機能するメソッドがあります。$('#myform').serialize()
このアプローチを使用して同じことを試みて$.ajax()
も、データ パラメータが正しく表示されないため、機能しません。
違いと、上記の代わりに何を使用できるかを知っている人はいます.serialize
か?
data パラメーターに関して違いが何であるかを誰かが知っているかどうか興味があります。
データパラメータとして$.post
a を取り、機能するメソッドがあります。$('#myform').serialize()
このアプローチを使用して同じことを試みて$.ajax()
も、データ パラメータが正しく表示されないため、機能しません。
違いと、上記の代わりに何を使用できるかを知っている人はいます.serialize
か?
このjqueryフォーラムスレッドはそれを要約しています:
$.post
は POST リクエストの簡略な使用方法である$.ajax
ため、この 2 つを使用することに大きな違いはありません。どちらも同じ基礎となるコードを使用して可能になります。$.get
同様の原理で動作します。—アディオスマニ
要するに、これは:
$.post( "/ajax", {"data" : json })
以下と同等です。
$.ajax({
type: "POST",
url: "/ajax",
data: {"data": json}
});
ここでの問題は、実際に機能していないということ$.ajax()
ではなく、Ajax リクエストで type パラメータを設定せず、デフォルトで GET リクエストになっているためです。データは get のクエリ文字列を介して送信されます。バックエンドがそれらを post パラメーターとして想定している場合、データは読み取られません。
$.post
$.ajax()
は、セットを使用した単なる呼び出しtype
です。ドキュメントを読むと、$.ajax()
上記のようにデフォルトで GET になっていることがわかります。
jQuery ドキュメントのjQuery.postページに移動すると、タイプが設定された $.ajax リクエストが表示されます。もう一度ドキュメントを読んでください。
いくつかのオンライン ドキュメントを読み直した後、$.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 で削除されました。代わりに 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");
});
これをデータパラメータとして指定していますか。は、次のことを期待して$.post
いる の省略形です。$.ajax
$.ajax({
type : 'POST',
url : url,
data : data,
success : success,
dataType : dataType
});
補足として、受け入れられた回答では、「$.ajax メソッドの data パラメータは $.post メソッドとは異なることを行いますが、正確にはわかりませんが、違いがあります」
使ってみてください:
{
...
data: JSON.stringify(yourJsonData),
...
}
それ以外の場合、json オブジェクトは URL エンコードされた文字列としてペイロードに挿入されます。