2009-06-04 19 views
4

コールバックと呼ばれるキー要素を持つJSONオブジェクトがあります。名前をJsonオブジェクトに渡した関数を呼び出す方法は?

{ 
"id":34, 
"description":"", 
"item_id":4, 
"callback":"addNew", 
"filename":"0000072.doc", 
"type":"News", 
"ext":"doc", 
"size":46592 
} 

javascript「addNew」関数を呼び出したいと思います。私は試した。

json.callback(json); 

しかし、動作しません。何か案が?

答えて

12

それはグローバル関数(それはすべきではない)であると仮定すると:あなたのコードはよくあなたはおそらくJSONができたすべての機能を含むオブジェクトを持っています構成されている場合は

window[json.callback](json); 

コール。

var myObject = { 
    func1: function myObject_func1_method(foo) { 
    return 1; 
    }, 
    func2: function myObject_func2_method(foo) { 
    return 2; 
    } 
} 

その後、次のことができます。

myObject[json.callback](json); 
+0

これはまさに私が探していたものでしたが、関数の名前を付ける必要はありません。関数func1、func2の識別子を使用して関数を呼び出すので、myObject_func1_methodとmyObject_func2_methodの名前は完全に不要に見えます。私は何か不足していますか? – xarxziux

-2

使用eval(json.callback+'()');

+5

evalが遅くて危険です – Quentin

+1

と不要... – annakata

+0

よろしく! 2つのマイナス投票。男は助けようとした!私はあなたに1つの投票! –

9

関数はグローバルスコープ内にある場合

window[json.callback](json); 

を使用し、evalを使用しないでください。そうでない場合は、ウィンドウの代わりにスコープを使用します。

関連する問題