1. ホーム
  2. javascript

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 オブジェクトです ( CityAge ). 配列は [] で表します。例えば [{ City: 'Moscow', Age: 25 }, { City: 'Paris', Age: 30 }] は2つのオブジェクトからなる配列です。