2010-01-27 9 views
1

J'utilise la boîte de dialogue JQuery et du PHP que je peux construire quelques add-in au bouton. Pour pouvoir ajouter du code côté serveur, je passe une méthode par paramètre. Le problème est que Firebug me dire que la méthode n'est pas définie:Javascript passant la fonction dans le paramètre?

alt text http://clip2net.com/clip/m12122/1264557672-clip-8kb.png

okHandler est le paramètre de cet appel de méthode pour augmenter le dialogue et il contient un simple message d'alerte pour le moment, plus tard des appels Ajax . Une idée de pourquoi ça ne marche pas?

alt text http://clip2net.com/clip/m12122/1264557824-clip-6kb.png

+1

Pouvez-vous fournir plus de contexte? Où est défini okHandler? – Joel

Répondre

4

Il ressemble à okHandler est une chaîne contenant une déclaration de fonction, et non une fonction réelle? Vous avez

okHandler = "function anonymous(){alert('This is a test');}"; 

au lieu de

okHandler = function(){alert('This is a test');}; 
0

As John Kugelman notes, okHandler semble être une chaîne. Il fonctionnerait mieux si elle était une fonction ... Cependant, si une chaîne doit être, alors vous devrez passer par eval() pour exécuter réellement:

eval("(" + okHandler + ")()") 
+0

+1 cela fonctionne avec eval mais en fait je passais une chaîne du côté du serveur au côté client. Je vous ai donné +1 mais j'accepterai que John réponde. Merci Shog9 –

0

est la fonction okHandler() chargée (comme un objet JS valide - pas une chaîne) au moment où vous obtenez cette erreur?

Je crois que ce n'est pas bien d'appeler quelque chose comme "if (foo! = Null)" si foo n'a pas déjà été déclaré comme variable quelque part. FireBug se plaindrait: "okHandler n'est pas défini."

Essayez quelque chose comme ça ...

var myHandlers = {}; 
// Load okHandler as a member of myHandlers when applicable here... 
$('#dialog'+idbox)... 
    "Oky": function() { 
     myHandlers.okHandler && myHandlers.okHandler(); 
     ... 
    } 
} 
Questions connexes