49

json を送信しようとしています。これが私の機能です:

var object = ... ;

$.ajax({
      type: 'POST',
      url: '<url>',
      contentType: 'application/json; charset=utf-8',
      dataType: 'json',
      data: object
    });

しかし、Chrome をチェックするたびに、常にクエリ パラメータとして送信されます。

Request Payload:
startDate=Wed+Dec+19+2012+19%3A00%3A00+GMT-0500+(EST)&endDate=Thu+Dec+20+2012+19%3A00%3A00+GMT-0500+(EST)&

JSONとして送信するにはどうすればよいですか?

4

3 に答える 3

83

JSON.stringify(object)

サンプル:

$.ajax({
    type: 'POST',
    url: '<url>',
    contentType: 'application/json; charset=utf-8',
    dataType: 'json',
    data: JSON.stringify(object)
});

注 JSON.stringify は、すべてのブラウザー ( http://caniuse.com/#feat=json )、特に IE7 以前のブラウザーでサポートされているわけではありません。

このブラウザもサポートする必要がある場合は、次の Javascript ライブラリを使用できます: https://github.com/douglascrockford/JSON-js

于 2012-12-19T16:14:28.797 に答える
4

を使用して文字列化JSON.stringify(object)

dataフィールドを次のように変更します。

...
data: JSON.stringify(object),
...

あなたがやっている方法、IMO、jQueryはパラメーターを辞書(キーと値のペア)と見なし、そこからパーセンタイルでエンコードされた文字列を構築します。したがって、その出力が表示されます。

于 2012-12-19T16:13:47.550 に答える
-2

次のようなフィールドとして JSON を使用して、デフォルトの「application/x-www-form-urlencoded」形式でデータを送信する方が簡単であることがわかりました。

$.ajax({
    type: 'POST',
    url: '<url>',
    dataType: 'json',
    data: {json:JSON.stringify(object)}
});

サーバーでは、通常のメソッドを使用して、 というフィールドを受け取りますjson

これがあなたに有効かどうかを確認するために共有しました。

于 2012-12-19T16:32:27.237 に答える