2006年 02月13日(Mon) [長年日記]
_ [プログラム]evalでハマる
Javascriptではオブジェクトを以下のように記述できます。
var oj = { value: 0, method: function() { alert('Hello!') } }
このフォーマットをJSON*1っていうらしいんですが、この間ハマったのが、サーバーからもらったJSONのデータをevalして使おうとした時。
例えば配列なら、
["a","b","c"]
上のようにサーバーから帰ってきた値を
var array = eval(res.responsText);
このようにevalしてやれば配列arrayを作る事ができます(res.responsTextにサーバーからのデータが格納されているものとする)。
じゃあ、同じように
{value: 0,method: function(){ alert('Hello!') }}
と返ってきた値を
var oj = eval(res.responsText);
とやってみたればいいのかな? と思って試してみたんだけど何故か上手くいかないんですよね。
で、しばらく調べまわった結果、
var oj = eval("(" + res.responsText + ")");
とカッコでくくってやれば良いと分かりました。{...}のままだと式として完成していないという事ですか。
*1 JavaScript Object Notation
昨日はサンクスでした。<br>まあ何となくわかったような(マテ<br>というかアイマスDVD発売延期になったのか・・・<br>危うくねくろんさんの所に取りに行くつもりだった、そして足にされてしまう予定だった(笑