J'ai la situation suivante en JavaScript:Comment puis-je appeler une fonction anonyme (stockée dans une chaîne) avec un argument en JavaScript?
<a onclick="handleClick(this, {onSuccess : 'function() { alert(\'test\') }'});">Click</a>
La fonction handleClick
reçoit le second argument comme un objet avec une propriété onSuccess
contenant la définition de fonction ...
Comment appeler la fonction onSuccess
(qui est stocké sous forme de chaîne) -et-passer otherObject
à cette fonction? (solution jQuery aussi bien ...)?
C'est ce que je l'ai essayé jusqu'à présent ...
function handleClick(element, options, otherObject) {
options.onSuccess = 'function() {alert(\'test\')}';
options.onSuccess(otherObject); //DOES NOT WORK
eval(options.onSuccess)(otherObject); //DOES NOT WORK
}
bah ... et là j'étais en train d'écrire mon exposition sur la portée d'eval. +1 pour répondre à la vraie question – Jimmy
Ouais j'ai fini par faire ça, mais cela signifie que je ne peux plus utiliser le json_encode en PHP ... cela encapsule tout dans les chaînes .. – Ropstah
@ropstah: je ne sais pas pourquoi vous essayez de passer les définitions de fonctions via JSON. .. À moins que vous ne génériez réellement ces fonctions à la volée, côté serveur, vous voudrez peut-être envisager de constituer une bibliothèque de fonctions et de simplement les * nommer * dans le JSON. Vous pouvez alors rechercher la fonction que vous voulez sans vous soucier de eval() – Shog9