人気ブログランキング | 話題のタグを見る

JavaScript eval() の奇妙な行動

ネットワークプログラムのサンプルで、改行を含むデータが取り出せない原因が分かった。どうも JavaScript の eval() で JSON をオブジェクト化するときに、JSON のデータに改行が含まれているとうまく働かないようなのだ。たとえば

a = eval('{"test": "hello, world"}');
alert(a.test);

は動作しないが、

a = eval('({"test": "hello, world"})');
alert(a.test);

は動く。

ところが、

a = eval('({"test": "hello,\n world"})');
alert(a.test);

はまた動かなくなってしまう。いろいろ検索しているが、今のところうまい解決法がない。
by tnomura9 | 2007-10-29 18:02 | XAMPP | Comments(2)
Commented by sshi at 2007-10-30 00:58 x
"\n"にエスケープが足りないのが原因だと思います。evalに渡る時点で"\n"が改行を表わす文字ではなく改行そのものと解釈されているので、evalには文字列の途中で改行してあるソースにみえているのでしょう。
firebugのコンソールで試しましたが、\\nにしてやると動きました。
Commented by tnomura9 at 2007-10-30 07:04
sshi さん、コメントありがとうございました。
早速試して、動くのを確認しました。もう一度 JSON 版に挑戦したいと思います。
<< データ通信にXMLを使う プログラムと思考 >>