Le script jQuery en ligne ne fonctionne pas dans l'appel AJAX

J'ai un problème:
Tandis que j'appelle un script en ligne (qui utilise jQuery aussi) à partir d'une autre page avec ajax – il semble que jQuery n'est plus défini (?), Et je ne peux pas utiliser les fonctions jQuery, qui devraient être appliquées (selon le script en ligne) Au contenu.

Il s'agit essentiellement d'une liste d'actualités, qui contient des liens vers des informations particulières. Je préfère utiliser inline-script en ce moment, car je n'aurai pas besoin de cette fonctionnalité ailleurs.

$.ajax({ url: href, cache: false, success: function(html){ $('#fancy_ajax').append($(html).find('.mainContentPadded')); } }); 

Comme vous pouvez le voir, j'appelle simplement une partie d'une autre page et j'ajoute son contenu à la page.

Lorsque je charge la page complète (pas la partie de celle-ci) – jQuery fonctionne comme prévu (c'est pourquoi j'ai rencontré l'idée, qu'il fallait "refaire").

Je vous remercie!

Donc, si je comprends correctement votre question, avez-vous un certain JavaScript contenu dans la variable html? Si oui, cela ne fonctionnera pas, car le JavaScript qui est récupéré à partir d'un succès AJAX n'est pas exécuté par le navigateur en raison de risques de sécurité.

Je vous recommande d'inclure le code javascript nécessaire dans votre page qui lance la requête Ajax afin qu'elle soit déjà disponible lorsque vous ajoutez le nouveau contenu.

*modifier…

Monksp a ajouté un excellent lien en tant que commentaire qui montre comment faire jQuery faire exactement ce que vous voulez.

Voici aussi un code pour faire la même chose mais manuellement:

 <html> <head> <title>Test JavaScript JSON</title> </head> <script src="https://www.google.com/jsapi"></script> <script> google.load('jquery', '1.3.2'); </script> <body> <script type="text/javascript"> $(document).ready(function() { $.getJSON('testjs.json', function(json){ $(document.body).append(json.html); eval(json.js); }); }); </script> </body> </html> 

Voici le contenu de testjs.json:

 {"html":"<p class=\"newelement\">Click me</p>","js":"$(\".newelement\").click(function() { alert($(this).text()); });"} 

Et enfin, il existe un ensemble de plugins existants et d'autres éléments pour inclure dynamiquement javascript. J'ai utilisé YUI Get dans le passé: http://developer.yahoo.com/yui/3/get/

Je suis confus par la question, je pense. Le bit de javascript que vous avez posté, est-ce chargé dans la page via ajax? Comme, vous chargez la page dans un navigateur, alors quelque chose se produit et que javascript est chargé dans la page? Cela ne fonctionnera pas, car tout javascript qui est chargé de cette manière ne sera pas exécuté.

Je recommanderais de le charger dans le javascript de la page d'origine si possible. Sinon, vous pouvez prendre les résultats de la requête ajax, et marcher dans la recherche de tags de script, et eval () leur contenu dans le cadre de votre fonction de succès. Ce n'est pas vraiment efficace (ou super sûr, assurez-vous d'avoir absolument confiance à l'endroit où le contenu chargé provient), mais cela va se faire.