jQuery .load () / .ajax () führt nach dem Anhängen kein Javascript in zurückgegebenem HTML aus
Ich habe versucht mit.load()
und$.ajax
um HTML zu erhalten, das an einen Container angehängt werden muss, aber das Javascript im zurückgegebenen HTML wird nicht ausgeführt, wenn ich es an ein Element anhänge.
Verwenden.load()
:
$('#new_content').load(url+' #content > *',function() {
alert('returned');
});
Ich habe auch versucht, zu einem $ .ajax-Aufruf zu wechseln. Ich habe dann das Skript aus dem zurückgegebenen HTML-Code extrahiert und es anschließend an den Container angehängt. In diesem Fall wird der JS jedoch nicht ausgeführt oder sogar angehängt<script>
für ein DOM-Element wie dieses ist verpönt?
Verwenden$.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();
});
Idealerweise würde ich dieses Javascript in einem Rückruf ausführen, nachdem ich den HTML-Code angehängt habe, aber die Variablen werden auf Werte gesetzt, die von einem Controller zurückgegeben werden.
Zusammenfassend versuche ich, HTML-Code zu erhalten, der JS enthält, der ausgeführt werden muss, nachdem dieser HTML-Code angehängt wurde, aber ich hatte kein Glück bei der Verwendung.load()
oder$.ajax()
da das Skript im zurückgegebenen HTML entweder beim Anhängen verschwindet oder gar nicht ausgeführt wird.