1. ホーム
  2. javascript

[解決済み] $.ajaxでクエリ文字列の代わりにJSONを送信するにはどうすればよいですか?

2022-04-20 14:46:49

質問

jQueryがクエリ文字列の代わりに実際のJSONを送信する方法を簡単に説明できる人がいますか?

$.ajax({
    url      : url,
    dataType : 'json', // I was pretty sure this would do the trick
    data     : data,
    type     : 'POST',
    complete : callback // etc
});

これは実際に、慎重に準備したJSONをクエリ文字列に変換するものです。厄介なことのひとつは、すべての array: [] に変換されます。 array[]: [] クエリスティングの制限のためと思われます。

解決方法は?

を使用する必要があります。 JSON.stringify を指定して、まずオブジェクトを JSON にシリアライズし、次に contentType サーバーがJSONであることを理解できるようにするためです。これでうまくいくはずです。

$.ajax({
    url: url,
    type: "POST",
    data: JSON.stringify(data),
    contentType: "application/json",
    complete: callback
});

ただし JSON オブジェクトは、JavaScript 1.7 / ECMAScript 5 以降をサポートするブラウザでネイティブに利用可能です。もしレガシーなサポートが必要な場合は json2 .