[Seasar-user:14063] Re: [teeda][kumu] idにハイフンがある要素をKumu.Ajaxで書き換える

Tonomura-Akira [E-MAIL ADDRESS DELETED]
2008年 5月 2日 (金) 11:53:39 JST


お世話になっております。殿村です。

下記質問に対して、少し調べてみました。

Kumu.AjaxのexecuteTeedaAjaxにて呼び出したクラスで
レスポンスをMapで以下のように作成します。

---
Map map = new HashMap();
map.put("foo-1", "foo");
return map;
---

すると、実際のレスポンスは以下のようになってました。

{foo-1:"foo"}

このレスポンスの文字列前後を小かっこで囲って
eval関数に渡したあと、コールバック関数を呼び出しているようですが
このeval関数の呼出でエラーになっています。

--- ajax.js(276行目---
 if (self.RESPONSE_TYPE_JSON == ajaxComponent.responseType) {
   var resText = req.responseText;
   ajaxComponent.doAction(eval('(' + resText + ')'));
---

それで、JSONの文法を http://www.json.org/ で調べたところ
keyもダブルクオーテーションで囲う必要があるようです。
つまり、実際のレスポンスは以下でなければいけないのでは無いでしょうか?

{"foo-1":"foo"}

上記文字列をeval関数に渡すとエラーにならないのも確認しました。


以上、よろしくお願いいたします。


> お世話になっております。殿村と申します。
> 
> 
> 同じ情報を複数の場所に出力するために
> HTML上のID属性にハイフンを付けて"foo-1"、"foo-2"としました。
> 
> さらに、画面を表示したあと、
> これらの値をKumu.Ajaxで書き換えるために
> サーバー側のメソッドの返り値のMAPの値に
> 
> map.put("foo-1","dummy");
> 
> とすると、Kumu.Ajax.executeTeedaAjaxで設定した
> コールバック関数が呼び出されない
> 現象が発生しました。
> 
> map.put("foo","dummy");
> 
> とすると呼び出されるので、確実にハイフンが問題だと思うのですが
> 回避方法など有りますでしょうか?
> なお、レスポンスはJSON形式を利用しています。
> 
> 申し訳ありませんがよろしくお願いいたします。
> 
> 環境は以下になります。
> Tomcat 5.5
> Teeaa 1.0.13
> eclipse 3.3
> dolteng 0.30
> 
> 

-- 
             <<<  殿村  亮  E-Mail  [E-MAIL ADDRESS DELETED] >>>
              <<<   株式会社EXA          第1事業部             >>>
               <<<    鉄鋼システム第2開発部  購買チーム            >>>
                <<<     TEL:03-5419-2794        FAX:03-5419-0016     >>>



Seasar-user メーリングリストの案内