みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

$.getJSONにJSON.stringifyを

$.getJSONに、JSON.stringifyした結果を指定したいのですが、どうすればよいでしょうか?

■現状
・コンソールにJSONは出力されているのですが、$.getJSONでこのファイルを指定しても、画面真っ白です

▼index.html
<script type="text/javascript" src="hoge.json"></script>
<script type="text/javascript">
$.getJSON('hoge.json', function(data) {

▼hoge.json
var obj =([
[略],
]);
var json_text = JSON.stringify(obj);

// テスト出力
console.log(json_text);

■質問
・$.getJSONにこの出力結果(json_text)を指定するためには、どうすれば良いでしょうか?
・一旦ファイル出力しなければいけないのでしょうか?
・どうやるのでしょうか?
・AJAXでサーバ側へデータを渡してファイル出力した後、$.getJSONでその出力したファイルを指定するしかない?

投稿日時 - 2014-05-02 10:52:28

QNo.8577759

暇なときに回答ください

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

何をどうしたいのかよく読み取れませんが・・・
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になるようにする必要があります。

投稿日時 - 2014-05-07 11:18:39

お礼

回答ありがとうございましたー

投稿日時 - 2014-06-08 08:38:01

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

>$.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>

投稿日時 - 2014-05-06 10:44:25

お礼

回答ありがとうございましたー

投稿日時 - 2014-06-08 08:38:14

あなたにオススメの質問