2009-06-04 6 views

Antwort

12

Unter der Annahme, es eine globale Funktion ist (es sollte nicht sein):

window[json.callback](json); 

Wenn Ihr Code ist gut strukturiert, dass Sie wahrscheinlich ein Objekt haben alle Funktionen enthält, die JSON konnte Anruf.

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

Dann können Sie:

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

Das war genau das, wonach ich suchte, aber ich sehe nicht, dass die Funktionen benannt werden müssen. Sie rufen die Funktionen mit den Identifikatoren func1 und func2 auf, sodass die Namen myObject_func1_method und myObject_func2_method völlig unnötig erscheinen. Fehle ich etwas? – xarxziux

-2

Verwenden eval(json.callback+'()');

+5

Eval ist langsam und gefährlich – Quentin

+1

und unnötig ... – annakata

+0

Komm schon! Zwei Minus-Stimmen. Der Typ hat versucht zu helfen! Ich stimme dir eins zu! –

9

nicht eval verwenden, verwenden

window[json.callback](json); 

Wenn die Funktion im globalen Bereich ist. Verwenden Sie andernfalls den Bereich statt des Fensters.