jQuery .load() / .ajax() de ne pas l'exécution de javascript dans le code HTML renvoyé après annexé
J'ai essayé d'utiliser .load()
et $.ajax
pour obtenir le code HTML qui doit être ajouté à un conteneur, mais le Javascript dans le code HTML renvoyé n'est pas exécuté lorsque je l'ajouter à un élément.
À l'aide de .load()
:
$('#new_content').load(url+' #content > *',function() {
alert('returned');
});
J'ai aussi essayé de passer à un $.appel ajax. J'ai ensuite extrait le script dans le code HTML renvoyé après que j'ai ajouté au conteneur, mais même problème, le JS n'est pas exécutée ou même ajouté dans ce cas, et comme je le comprends, en essayant d'ajouter un <script>
à un élément du DOM comme c'est mal vu?
À l'aide de $.ajax
:
$.ajax({ url: url }).done(function(response) {
var source = $("<div>").html(response).find('#overview_script').html();
var content = $("<div>").html(response).find('#content').html();
$('#new_content').html(content);
$('<script>').appendTo('#new_content').text(source).html();
});
Idéalement, j'aimerais exécuter ce code javascript dans un rappel après j'ai ajouté le code HTML, mais les variables sont des valeurs qui sont retournés à partir d'un contrôleur.
Donc en résumé, je suis en train d'essayer d'obtenir le code HTML qui contient JS qui doit être exécuté après que HTML a été ajouté, mais j'ai pas eu de chance en utilisant .load()
ou $.ajax()
que le script dans le code HTML renvoyé soit disparaît en ajoutant, ou il ne les exécute pas du tout.
- Essayez cette démo plnkr.co/modifier/Hj0cyTUV44BPrxiOvPpW?p=preview
- Merci, cela a fait l'affaire!
- Je vais mettre à jour la présente comme une réponse
Vous devez vous connecter pour publier un commentaire.
Quand
load()
est utilisé avec un fragment sélecteur de l'élément script sera supprimés avant que le fragment est ajouté ainsi la script ne sera pas exécuté.Donc, Essayez
Démo: Violon
$(result)
enlèvent le script contenu. Avez-vous essayé?$('#new_content').load(url).not('#content > *').remove()
Si vous savez ce que le script que vous souhaitez exécuter, vous pouvez définir le script quelque part d'autre, hors de l'ajax réponse, et ensuite appeler la fonction de rappel. Ainsi, au lieu de:
vous pouvez utiliser
Comment à propos de ce code,
ou vous pouvez simplement déplacer l'option JavaScript de votre contenu à autre fichier et le charger à l'aide de
ou simplement l'utiliser,