• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:フォームからjQuery,jQuery.jsonを使ってJSONを作っ)

フォームからjQuery,jQuery.jsonを使ってJSONを作成してPHPで表示したい

このQ&Aのポイント
  • フォームからjQueryを使用して作成したJSONデータをPHPで表示する方法について悩んでいます。ただPHP側でvar_dump($_POST)を行うとArray()と表示されてしまいます。
  • JSONのデータをオブジェクト形式で送信するとvar_dumpで表示することができるため、JSONの勉強をしているなかでなぜこのような現象が起きるのか理解したいです。
  • アドバイスなどいただけると助かります。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.2

「var json = $(form.serializeArray()); このデータを送るのが一番標準ということでいいのでしょうか?」 =>そうです。わざわざJSONオブジェクトに作り変える必用は無いです。   .serializeArray()で、jQueryが、JSON形式の文字列データに変換して   くれてるんです。 「phpで json_decodeしなくてもデータがそのまま二次元配列で渡っている」 =>そう思ってもよいでしょう。正しくは、二次元配列の形式に格納する   形式の文字列データで渡っているですが  PHPで、 echo file_get_contents("php://input");  として見れば、送信されてくる文字列データが見れます。

noname#212926
質問者

お礼

お礼が遅くなってすみません。 本当にありがとうございます。 やっとこさ理解ができました。 自分で余計なことをしていたためにややこしかったんですね。

その他の回答 (1)

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.1

GETやPOSTで送れるデータは、ストリング(文字列だけです。) JSONを送受信するとは、JSON形式でテキストデータを 送受信するという事です。 javascriptオブジェクト(変数、配列、関数、DOM要素,json形式のobject...)を そのままGET、POSTしても、結局 .toString() の値が渡される だけだからだと思います。 var json = $(form.serializeArray()); はフォームの中身をJSON形式の文字列を生成してます。だから送れます。 var strJson = $.toJSON(json); は、JSON形式の文字列からJSONオブジェクトを生成してます。 これは、文字列に戻さないと遅れません。 IE以外なら、 data:strJson.toSource() でうまくいくんじゃないかと、

noname#212926
質問者

お礼

アドバイスありがとうございます。 少し分かってきた気がします。

noname#212926
質問者

補足

>JSONを送受信するとは、JSON形式でテキストデータを >送受信するという事です。 ということは var json = $(form.serializeArray()); このデータを送るのが一番標準ということでいいのでしょうか? $.toJSON(json); この作業が蛇足で、これを行っているからうまくいかないと今は考え始めています。 ただ、phpで json_decodeしなくてもデータがそのまま二次元配列で渡っているということはJSONではないのですよね。 Google Chromeですがdata:strJson.toSource();を行ってみましたがダメでした。 何も変わらずでした。 現状var json = $(form.serializeArray());で渡せばそのまま何の問題もなくphpで作業できます。 phpからJSONを返す作業も問題なくいっています。 ただvar json = $(form.serializeArray());ということろがJSONを送っているのかが分からないという状況です。