フォームからjQuery,jQuery.jsonを使ってJSONを作ってPHPで表示したい。
こんばんは。2、3日ずっと悩んでて解決しないので助けてください。
jQuery,jQuery.jsonを使ってJSONを作成しています。
クリックイベントに
var form = $("#sform");
var json = $(form.serializeArray());
var strJson = $.toJSON(json);
という形をとって
$.ajax({
url : "request.php",
type : "post",
data : strJson,
success: function(request){
$('#result').html(request);
}
});
で送っています。
ただPHP側で
var_dump($_POST);
を行ってもArray ( ) と表示されます。
firebugで見たところpostに入っているデータは以下の通りです。
{"0":{"name":"date","value":"2010/09/15"},"1":{"name":"type","value":"new"},"2":{"name":"bin[]","value":"2"},"3":{"name":"bin[]","value":"3"},"length":4}
var_dumpで表示できないのはなぜでしょうか?
上記で変数json のまま送るとオブジェクトとして送れてvar_dump でも表示できます。
ただ今はjson の勉強をしているので、できればなぜこうなっているのかを理解したいです。
基本的なところで勉強不足かもしれませんが、何かアドバイスなど頂けると嬉しいです。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
「var json = $(form.serializeArray());
このデータを送るのが一番標準ということでいいのでしょうか?」
=>そうです。わざわざJSONオブジェクトに作り変える必用は無いです。
.serializeArray()で、jQueryが、JSON形式の文字列データに変換して
くれてるんです。
「phpで json_decodeしなくてもデータがそのまま二次元配列で渡っている」
=>そう思ってもよいでしょう。正しくは、二次元配列の形式に格納する
形式の文字列データで渡っているですが
PHPで、
echo file_get_contents("php://input");
として見れば、送信されてくる文字列データが見れます。
お礼が遅くなってすみません。
本当にありがとうございます。
やっとこさ理解ができました。
自分で余計なことをしていたためにややこしかったんですね。
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()
でうまくいくんじゃないかと、
この回答への補足
>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を送っているのかが分からないという状況です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
二次元配列を使って順位をだす...
-
画面遷移を行わずに同一ページ...
-
スマホ上で、左右スワイプで次...
-
Outlookのアカウントがあるとメ...
-
Colorboxがうまく設置できません
-
<tr>指定した表の行要素をボ...
-
【GAS】WEBアプリでハイパーリ...
-
GASでチェックボックスを一括of...
-
セレクトボックスで配列を呼び...
-
jqueryのselect2で検索欄の文字...
-
セレクトを全て選択されていな...
-
読み込んだQRコードをフォーム...
-
初心者です。gulpでコンパイル...
-
jquery 診断コンテンツにチェッ...
-
jsで質問です。 ボタンが二つ存...
-
jsonテキストデータの並び替え...
-
食材の期限を管理するためにGAS...
-
前回の質問の続き function mov...
-
このプログラムに、王手をかけ...
-
前回の質問の続き function mou...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
jsonテキストデータの並び替え...
-
テキストファイルの内容を変数...
-
jQuery.msgBoxでのthisの使用に...
-
【PHP,JavaScript】文字が誤変...
-
http上でrequest されたxmlファ...
-
VSCodeにて「終了タグ」の背景...
-
jQuery $.ajax JSON形式のPOST
-
以下のようなjsonファイルで、"...
-
gulpfile.jsとpackage.jsonの読...
-
【JavaScript】confirmのボタン...
-
DirectXとOpenGLはどちらが動作...
-
ASP.NET(VB)VBソースからJavas...
-
saved from url=(0013)abou
-
JSTLを利用してJavascriptの結...
-
[JavaScript] preven...
-
リンクを押すとEXEファイルを実...
-
HTMLでDBからデータを表形式で...
-
PHPでフォームの自動入力できま...
-
ブラウザ閉じたらサーバー処理...
-
webシステムでchrome
おすすめ情報