web-dev-qa-db-ja.com

javascript-投稿を介してオブジェクトを渡す

私はこのようなオブジェクトを持っています

var obj = {p1:true、p2:true、p3:false}

このオブジェクトをPOSTリクエストの一部として渡そうとしています。

しかし、もう一方の端(phpで)で私が得るのは

[オブジェクトオブジェクト]

郵便でオブジェクトを送信するにはどうすればよいですか?

基本的に私がやろうとしているのは

非表示で、そのように作成された入力があります

<input id="obj" type="hidden" name="obj[]">

これは隠されたフォームの一部です。

ボタンが押されたとき私は持っています

$(#obj).val(obj);
$('form').submit();

12
Hailwood

オブジェクトを送信する前に、オブジェクトをシリアル化/文字列に変換する必要があります。これには jQuery.param() を使用できます。

$('#obj').val(jQuery.param(obj));
24
Matt

[〜#〜] json [〜#〜] 表記を使用してオブジェクトをサーバーに送信することを検討してください。 ページに JSONパーサー/レンダラー を含めると、(現在、すべての最新のブラウザーに組み込まれており、標準モードのIE8にも組み込まれています)オブジェクトを文字列に変換して、完全なオブジェクトグラフを保持できます。現在、ほとんどのサーバーサイド言語でJSON解析を利用できます(PHPではjson_decode、 例えば)。フォームを送信する前に、その文字列を非表示のフォームフィールドに入力できます。

これは次のようになります。

$('#obj').val(JSON.stringify(obj));
$('form').submit();

...そしてサーバー側には次の形式の文字列が表示されます

{ "p1" : true, "p2" : true, "p3" : false }
11
T.J. Crowder