- - PR -
JSONオブジェクトについて
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-11-15 23:23
http://www.kawa.net/works/js/jkl/hina.html
こちらを参考にajaxの学習をしています。 JKL.HinaへのJSONオブジェクトの投入のところで躓いています。 環境はサーバーがIIS5.0、ClientがIE6.0SP2です。
doSampleCaseのリンクをクリックすると正常に動作します。 # testArrayの内容がきちんと表示されます。 doTestCaseのリンクをクリックすると内容が表示されません。 1.doSampleCase内のalert(testArray)ではObjectが返ってきます。 # JKL.Hinaに投入するのはObject型でないとNGと推測 2.doTestCase内のalert(dataArray)ではObject×3が返ってきます。 # 正しくCSVが2次元配列になっていると推測 3.doTestCase内のalert(jsonArray)ではJSON形式のデータが表示されます。 # JSONチックには変わっているのは確認 上記の現象から、JSONオブジェクト型になっていないと推測し、 hina.expand( eval(jsonArray), "dest" ); のようにeval関数でjsonArrayを囲んでJKL.Hinaに引き渡しました。 # ここが自信ありません。検索してみたのですがうまく引っ掛けられませんでした。 おそらく、JSONオブジェクト型の作り方が間違っているか 1.にあって3.にないtable1:という値?属性?(呼び名がわかりません?)が ないためにNGになっていると考えています。 何かヒントがありましたら、ご提示ください。 よろしくお願いいたします。 以上 | ||||
|
投稿日時: 2005-11-16 13:53
いろいろ調べた結果、evalへの引数は式で入れなければならないらしいとの
ことで、一応動くようになりました。
ここで疑問なのですが、obj=とか適当につけてしまったのですが、 ここはどんな意味を持つのでしょうか。 お分かりになる方がいらっしゃいましたら、教えてください。 | ||||
|
投稿日時: 2005-11-16 14:33
eval に渡した文字列は、その箇所にその文字列のJavaScriptコードを
直接記入したのとほぼ同じことになります。そのため、
と同じことになります。 結果、変数objにjsonArrayに従ったArrayインスタンスを値に持つ プロパティtable1を持ったオブジェクトが代入され、そのオブジェクトが hina.expandの第1引数の実引数として渡されます。 "obj="をつけたことでローカル変数名空間にobjという名前が 発生してしまっていますので、変数名空間の汚染を最小に するには、"obj="よりも"0,"とでもつけたほうがいいと思います。 [ メッセージ編集済み 編集者: nak2k 編集日時 2005-11-16 14:34 ] | ||||
|
投稿日時: 2005-11-16 14:44
nak2kさんありがとうございます。
私の当初やっていた方法だと、後続でobjという変数を使って処理できる という理解をしました。なお、当該スクリプトは0,の指定でもうまく行きました。 evalやJavaScriptにおける式の考え方などもう少し検索して勉強してみます。 |
1