jQueryでJSONデータを送信する
2023-09-04 02:25:40
質問
なぜ以下のコードはデータを
City=Moscow&Age=25
として送信するのでしょうか?
var arr = {City:'Moscow', Age:25};
$.ajax(
{
url: "Ajax.ashx",
type: "POST",
data: arr,
dataType: 'json',
async: false,
success: function(msg) {
alert(msg);
}
}
);
どのように解決するのですか?
リクエストのコンテンツタイプも、正しいJSONリクエストも指定されていないためです。以下は、JSONリクエストを送信する正しい方法です。
var arr = { City: 'Moscow', Age: 25 };
$.ajax({
url: 'Ajax.ashx',
type: 'POST',
data: JSON.stringify(arr),
contentType: 'application/json; charset=utf-8',
dataType: 'json',
async: false,
success: function(msg) {
alert(msg);
}
});
気づいてほしいこと
-
の使用法
JSON.stringify
メソッドを使用して、javascript オブジェクトを JSON 文字列に変換することができます。もし古いブラウザをサポートしたい場合は、以下のように json2.js -
リクエストのコンテントタイプの指定は
contentType
プロパティを使って、JSON リクエストを送るという意図をサーバーに示します。 -
は
dataType: 'json'
プロパティは、サーバーから期待するレスポンスタイプに使用されます。jQueryは十分にインテリジェントで を推測します。 それをサーバーからContent-Type
レスポンスヘッダから推測します。ですから、もし HTTP プロトコルを多少なりとも尊重するウェブサーバがあり、レスポンスにContent-Type: application/json
で応答する場合、jQuery は自動的にその応答を解析して javascript オブジェクトを作成し、そのオブジェクトをsuccess
コールバックに格納されます。dataType
プロパティを指定する必要がありません。
気をつけるべきこと
-
呼び出す内容
arr
は 配列ではありません。 . これは、プロパティを持つ javascript オブジェクトです (City
とAge
). 配列は[]
で表します。例えば[{ City: 'Moscow', Age: 25 }, { City: 'Paris', Age: 30 }]
は2つのオブジェクトからなる配列です。
関連
-
[解決済み] jQueryで要素が非表示になっているかどうかを確認するには?
-
[解決済み] jQueryでチェックボックスに "checked "を設定する
-
[解決済み] なぜGoogleはJSONレスポンスにwhile(1);を前置するのでしょうか?
-
[解決済み] jQueryの「exists」関数はありますか?
-
[解決済み] jQueryでページを更新するにはどうすればよいですか?
-
[解決済み] jQueryで要素にスクロールする
-
[解決済み] jQueryで入力を無効化/有効化する?
-
[解決済み] jQueryを使ったAjaxリクエストの中断
-
[解決済み】jQueryでチェックボックスがチェックされているかどうかを確認するにはどうすればよいですか?
-
[解決済み] なぜ "use strict "はパフォーマンスを10倍向上させるのか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ジェスト あるクラスの特定のメソッドをモックする方法
-
[解決済み] 文字列のn番目の出現箇所を取得するには?
-
[解決済み] bootstrap のポップオーバーがすべての要素の上に表示されない
-
[解決済み] TypeScriptのdeclare classとinterfaceの違いとは?
-
[解決済み] JavaScriptを使用してHTML要素に属性を追加/更新するには?
-
[解決済み] TypeScriptプロジェクトで既存のC#クラス定義を再利用する方法
-
[解決済み] Reactメモを使うべきではない場合とは?
-
[解決済み] JavaScript で `throw` の後に `return` をする必要がありますか?
-
[解決済み] HTML要素にスクロールバーがあるかどうかをチェックする
-
[解決済み] JavaScriptでDIVを表示・非表示にするには?