- ベストアンサー
$.getJSONにJSON.stringifyを
- $.getJSONとJSON.stringifyを組み合わせて使用する場合について質問しています。
- 現在、コンソールにはJSONデータが表示されていますが、$.getJSONを使用しても画面が真っ白になってしまいます。
- 質問者は、この出力結果を$.getJSONに指定する方法を知りたいとしています。また、ファイル出力する必要があるのか、他の方法があるのかも知りたいそうです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
何をどうしたいのかよく読み取れませんが・・・ ajaxとjsonの両方に誤解があるようです。 (jQueryを使用していると仮定) >$.getJSON('hoge.json', function(data) { ご質問文通りの構成であるなら、上の文で指定しているファイルはJSONファイルではなくスクリプトファイルになっています。 getJSONで取得したいのなら、JSON形式のデータファイルを用意するか、サーバサイドのプログラムからJSONデータを出力するなどが必要です。 あるいは、元のデータがご提示の「hoge.json」のようなスクリプトファイルになっているのであれば、ご提示の例のように ><script type="text/javascript" src="hoge.json"></script> でスクリプトとして読み込めば十分で、ajaxなど用いる必要もなくクロスドメインも気にする必要がなくなります。 >コンソールにJSONは出力されているのですが、 ご提示の通りだとするなら、スクリプトタグで実行されたデータがコンソールに出力されているのであって、getJSONで取得しているわけではありません。 >$.getJSONにこの出力結果(json_text)を指定するためには、 >どうすれば良いでしょうか? ご提示の内容では、json_textは出力結果ではありません。(どこにも出力されていない) (javascriptの処理結果です。また、javascriptはクライアントサイドで実行されるスクリプトなので、サーバサイドでは処理されません。) 先にも書きましたように、ajaxでjsonを取得したいのなら、指定URLからのレスポンスがJSONになるようにする必要があります。
その他の回答 (1)
- UC_M
- ベストアンサー率63% (7/11)
>$.getJSONに、JSON.stringifyした結果を指定したいのですが、どうすればよいでしょうか? 結果を指定したい?? >コンソールにJSONは出力されているのですが、$.getJSONでこのファイルを指定しても、画面真っ白です コンソールに結果が出力されるのはhoge.jsonでconsole.log(json_text)を実行しているからです。 画面が真っ白なのは画面に結果を出力していないからです(HTML/JavaScriptが省略されてるので推測ですが)。 画面への出力は$.getJSONの第2引数のfunctionの中でやりますが、ここで引数のdataを画面に出力する処理が必要です。 var jsonStr = JSON.stringify(data); //JSONオブジェクトを文字列に変換 $("body").append(jsonStr); //HTMLのbodyタグにJSON文字列を追加 >・$.getJSONにこの出力結果(json_text)を指定するためには、どうすれば良いでしょうか? 出力結果を指定する?? ・一旦ファイル出力しなければいけないのでしょうか? 何をしたいのかがイマイチわからないので出力すべきかどうかがわかりません。 ・どうやるのでしょうか? 同上 ・AJAXでサーバ側へデータを渡してファイル出力した後、$.getJSONでその出力したファイルを指定するしかない? 同上 hoge.jsonに定義したJSONを画面に出力したいということであれば、 hoge.jsonには出力したいJSON("{"で始まり"}"で終わる)だけをかきます。 変数の代入(var宣言)やログ出力(console.log)などの処理を記述するべきではありません。 ▼hoge.json { "name" : "鈴木太朗", "age" : 18, "sex" : "男" } ▼index.html <script> $.getJSON('hoge.json', function(data) { var jsonStr = JSON.stringify(data); //オブジェクトを文字列に変換 $("body").append(jsonStr); //画面への出力:HTMLのbodyタグにJSON文字列を追加 } </script>
お礼
回答ありがとうございましたー
お礼
回答ありがとうございましたー