jQuery で JSON データを送信する: フォームエンコードされた文字列を回避する
開発者は、jQuery の $.ajax() を使用して JSON データを送信する際に、データが意図された JSON 形式ではなくフォームエンコードされた文字列として送信される問題が発生します。これは、特定のパラメータが省略された場合に発生します。
次のコードを考えてみましょう:
var arr = {City:'Moscow', Age:25}; $.ajax( { url: "Ajax.ashx", type: "POST", data: arr, dataType: 'json', async: false, success: function(msg) { alert(msg); } } );
このコードでは、データはフォーム エンコードされた文字列として送信されます (例: "City=Moscow&Age= JSON ではなく 25")。この問題を解決するには、次の 2 つの重要な手順を実行する必要があります。
データを JSON 形式に変換する:
JSON.stringify() メソッドを使用して、 JavaScript オブジェクト (arr) を JSON に変換string.
var arr = { City: 'Moscow', Age: 25 }; var json_data = JSON.stringify(arr);
リクエストのコンテンツ タイプを指定します:
contentType プロパティを 'application/json; に設定します。 charset=utf-8' は、リクエストに JSON データが含まれていることを示します。
contentType: 'application/json; charset=utf-8',
以下の修正されたコードには、次の変更が組み込まれています。
$.ajax({ url: 'Ajax.ashx', type: 'POST', data: json_data, contentType: 'application/json; charset=utf-8', dataType: 'json', async: false, success: function(msg) { alert(msg); } });
これらの調整により、データが JSON として送信されるため、サーバーはリクエストを正しく処理し、必要な JSON 応答を返すことができます。
以上がjQuery を使用して JSON データを送信する方法: フォームエンコードされた文字列を回避する?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。