2009-03-27 5 views
1

Je charge une partie de la page en utilisant des appels AJAX, qui peuvent contenir des fonctions de script définies dans ces parties. Qui sont attachés avec les contrôles étant chargés avec différents événements. Maintenant, le problème est que lorsque ces événements se sont déclenchés j'ai eu l'erreur "objet non trouvé" qui indique que la fonction n'est pas trouvée/définie. En utilisant Firebug je peux voir que la fonction est définie et disponible. Alors, comment puis-je m'assurer que le navigateur peut trouver la fonction correspondante.AJAX + Ajout dynamique d'une fonction de script Java à la page

J'ai essayé, mais soit je me manque quelque chose ou soit sa ne fonctionne pas, voici ce que je fais

 Page 
      --->Partial View A 
        ----->Partial View B 

maintenant Page charges A partiel avec Ajax Les appels supplémentaires charges partielles B avec Ajax Calls.Both Partiel A & B contient peu de fonctions de script Java qui, logiquement, ne leur sont associées qu'avec des pages maîtres. Les pages se chargent correctement, sauf que les fonctions ne peuvent pas s'exécuter lorsque "Objet non trouvé" entre en jeu.

+0

utilisez-vous une structure/bibliothèque ou tout simplement javascript? – andi

+0

Bien que j'utilise JQuery mais ici c'est un script java normal dans ASP.NET MVC – Gripsoft

Répondre

0

Si vous utilisez un framework ou une bibliothèque, vous devez définir un paramètre afin d'évaluer le script présent dans la réponse du client. requête ajax. Il est usualy appelé evalScripts

evalScripts:true 

Vous pouvez également utiliser les callbacks (succès/erreur) de la demande pour déclencher les événements, de sorte qu'il est plus facile de garder le code dans un endroit et d'éviter des situations comme celle-ci.

Si vous utilisez javasciprt plaine et la XmlHttpObject, alors vous devez trouver manuellement tous les scripts dans votre réponse balises puis eval() les.

3

Vous devez définir des fonctions en utilisant cette syntaxe:

myFunction = function(foo) {} 

pas cette syntaxe

function myFunction(foo) {} 

La seconde forme ne fonctionnera pas si eval() 'd (qui est probablement ce qui se passe)

Questions connexes