プロが教えるわが家の防犯対策術!

$.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でその出力したファイルを指定するしかない?

A 回答 (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になるようにする必要があります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/06/08 08:38

>$.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>
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/06/08 08:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!