Die bereitgestellten Antworten nur funktionieren, wenn Sie einen reinen Inhalte aus dem Ajax-Aufruf zurück. Mit meiner Lösung können Sie jeden JavaScript-Code ausführen, der in der Antwort zurückgegeben wird.
Das Problem ist, dass die Antwort vom Server nicht verwendet wird.
Datei: index.html
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body onload="DBReadNews()">
<script src="http://code.jquery.com/jquery-3.2.1.min.js"></script>
<script src="myjs.js"></script>
</body>
Datei: myjs.js
function DBReadNews(){
$.ajax({
type: "POST",
url: "newsphpread.php",
datatype: "text",
success: function(response) {
$('body').prepend(response);
}
});
}
Datei Stattdessen sollte es im DOM wie folgt injiziert: newsphpread.php
<?php echo "<script>alert('test!');</script>"; ?>
Wenn index.html im Browser geöffnet wird, wird eine Anforderung an AJAX newsphpread.php gesendet. Die Antwort dieser Anfrage wird in die und die alert() (oder andere Javascript-Code) wird ausgeführt.
Hinweis: ///var/www/alert.html: Dies sollte auf einem Webserver ausgeführt werden, das heißt, die Indexdatei zu arbeiten, soll über http http://localhost/index.html und nicht als Datei Datei zugegriffen werden. Wenn index.html mit file: // geöffnet wird, erhalten Sie einen Fehler in der Konsole "Kreuzursprungsanforderungen werden nur für Protokollschemas unterstützt: http, data, chrome, chrome-extension, https."
Erstens tun Sie nichts mit dem HTML, das Sie im PHP-Code an die AJAX-Anfrage zurückgeben, und zweitens, selbst wenn Sie es getan hätten, würde es nicht angezeigt, da das Skript nicht so ausgeführt wird. Wenn Sie nach Abschluss des Aufrufs ein 'alert()' anzeigen möchten, fügen Sie es einfach direkt in die 'success' Handler-Funktion ein. –
Vielen Dank für die Antwort. – zaa
Auch 'language = 'javascript' ist aus dem Jahr 1995, entfernen Sie es einfach. – Martijn