データパラメータに関する違いが何かを知っている人がいるかどうか興味があります。
データパラメータとして$('#myform').serialize()
を取り、機能する_$.post
_メソッドがあります。
$.ajax()
アプローチを使用して同じことを試しても、データパラメーターが正しく表示されないため、機能しません。
誰もが上記の_.serialize
_の代わりに違いと私が使用するものを知っていますか?
いくつかのオンラインドキュメントを読み直した後、$。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
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", {"data" : json })
と同等です:
$.ajax({
type: "POST",
url: "/ajax",
data: {"data": json}
});
ここでの問題は、$.ajax()
が機能していないということではありません。Ajaxリクエストでtypeパラメーターを設定しておらず、デフォルトでGETリクエストになっているためです。データはgetのクエリ文字列を介して送信され、バックエンドがそれらをpostパラメーターとして予期している場合、それらを読み取りません。
_$.post
_は、単にtype
が設定された$.ajax()
の呼び出しです。 docs を読むと、$.ajax()
が上記のGETにデフォルト設定されていることがわかります。
JQueryドキュメントの jQuery.post ページにアクセスすると、タイプが設定された$ .ajaxリクエストが表示されます。もう一度ドキュメントを読んでください。
これをデータパラメーターとして指定していますか? $.post
は、単に$.ajax
これは以下を期待しています。
$.ajax({
type : 'POST',
url : url,
data : data,
success : success,
dataType : dataType
});
補完的なものとして、受け入れられた答えでは、「$。ajaxメソッドのdata paramは、$。postメソッドとは異なることを行います。正確には何がわからないが、違いがあります 」
使用してみてください:
{
...
data: JSON.stringify(yourJsonData),
...
}
それ以外の場合、jsonオブジェクトはペイロードにURLエンコードされた文字列として挿入されます。