Javascript nicht geladen wird, nachdem AJAX-call
Ok den folgenden HTML-code geparst wird, wenn ich eine Seite zu laden:
<div id="clip-wrapper">
<script type="text/javascript">
alert("bla");
</script>
</div>
Dies führt zu einer Warnmeldung "bla", nachdem mein AJAX-Aufruf, der geparste HTML-code sieht wie folgt aus:
<div id="clip-wrapper">
<script type="text/javascript">
alert("ajaxbla");
</script>
</div>
Diese auf der anderen Seite, nicht im Ergebnis eine Warnung. Warum? Und wie kann ich dieses Problem beheben?
- überprüfen Sie die editierte Antwort
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn es irgendwelche scripts geladen in Ihrem dom aus einem Ajax-Aufruf werden Sie nicht ausgeführt werden, aus Gründen der Sicherheit.
Um das Skript auszuführen, müssen Sie entfernen Sie es aus der Antwort, und führen Sie es durch
eval
Ideal obwohl, werden Sie wollen, führen Sie Ihr Skript als Rückruf, wenn der ajax-request abgeschlossen ist. Wenn Sie mit jQuery wäre dies die Erfolg Ereignis in Ihrem ajax-Aufruf, und wenn Sie es tun, nativ, es wäre das readyStateChange-Ereignis von Ihrem xhr-Objekt.
BEARBEITEN
Wenn Sie wirklich wollen, entscheiden sich für die eval-option, die Sie könnten versuchen, so etwas wie dieses:
function stateChanged() { if (xmlHttp.readyState == 4) document.getElementById(contentDiv).innerHTML = xmlHttp.responseText; }
wo contentDiv ist clip-wrapper in diesem Fall. (ist es so einfach wie eval(xmlHttp.responseText); ?)if (xmlHttp.readyState == 4) { document.getElementById(contentDiv).innerHTML = xmlHttp.responseText; eval(document.getElementById(contentDiv).innerHTML); }
bin ich etwas fehlt? Danke für die Hilfe, Schätze es sehr!alert("msg");
so wird es nicht laufen als javascript-code? Oder verstehe ich dich falsch?setzen Sie den code in
oder nutzen Sie readysatchange Falle des XMLHttp-Objekt.
Bearbeiten
wenn Sie jquery als gehen für
hier in Ereignis, Erfolg Sie können Ihren code schreiben, die ausgeführt werden, sobald Sie fertig sind mit der ajax.
beliebigen code innerhalb des Körpers zwischen
script
tag wird nur ausgeführt, beim laden des Dokuments.in ajax-calls nutzen
callback
odersuccess:
oderoncomplete:
zu handhaben, die ajax-Antwort, wenn Sie mit jQuery.Du meinst den zweiten html-code kommt, wie eine ajax-Antwort?? Hast du selbst eingefügt, den html-Code der aktuellen Seite?
Etwas wie
Aber auch mit
innerHTML
Ersatz-ich weiß nicht, was diescript
im inneren wird Sie automatisch ausgeführt. Der browser analysiert diescript
aber nicht automatisch ausführen. (ZB, wenn Sie einenfunction
definition in der html -, nach dem ajax-Aufruf werden Sie in der Lage, die Funktionen aufgerufen)Andere Möglichkeit ist die Verwendung
document.write
wird, ersetzt den gesamten Inhalt der Seite mit den neuen html-und derscript
tags werden automatisch ausgeführt.Hoffe, das hilft,