2009-06-04 2 views

Répondre

12

Si l'on suppose qu'il est une fonction globale (il ne doit pas être):

window[json.callback](json); 

Si votre code est bien structuré, vous aurez probablement un objet contenant toutes les fonctions du JSON pourrait appel.

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

Ensuite, vous pouvez:

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

C'était exactement ce que je cherchais, mais je ne vois pas que les fonctions doivent être nommées. Vous appellerez les fonctions en utilisant les identificateurs func1, func2, de sorte que les noms myObject_func1_method et myObject_func2_method semblent totalement inutiles. Est-ce que je manque quelque chose? – xarxziux

-2

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

+5

eval est lente et dangereuse – Quentin

+1

et inutile ... – annakata

+0

Allez! Deux votes négatifs. Le gars a essayé d'aider! Je vous en dis un! –

9

Ne pas utiliser eval, utilisez

window[json.callback](json); 

Si la fonction est dans la portée globale. Utilisez la portée au lieu de la fenêtre sinon.

Questions connexes