Ich schrieb eine vorherige Frage ... was ziemlich verwirrend war ... so habe ich es so einfach wie möglich für alle verständlich gemacht.Verwendung von Javascript (<script> und onload) mit Ajax Calls
Ich verwende den PHP integrierten Webserver, um meinen PHP-Code zu testen. Ich weiß nicht, ob es irgendwelche Nachteile gibt, aber das ist es, was ich gerade benutze (Ratschläge wären hilfreich in diesem Zusammenhang, da ich offensichtlich nicht weiß, was ich tue, aber ich denke nicht es betrifft das Problem)
Ich versuche, den untenstehenden Code und speziell leggo()
auszuführen. Alle Skripte in page2.php
funktionieren nicht und Onloads funktionieren definitiv nicht (aus offensichtlichen Gründen). Diese Skripts funktionieren nicht, aber wenn alle Skripte in header.php
verschoben werden, beginnen sie zu arbeiten ... außer Onload. Gibt es eine Alternative zur Verwendung onload. Ich schätze, es gibt ein Problem mit der Verwendung von AJAX und onload in Verbindung. --- EDIT --- Code wurde zum besseren Verständnis und Vorschlag vereinfacht.
-Code
heading.php
<!DOCTYPE html>
<html>
<head>
<script>
function loadPageBelow(fileName) {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
document.getElementById("content").innerHTML = xhttp.responseText;
};
xhttp.open("GET", fileName, true);
xhttp.send();
}
</script>
</head>
<body>
<p><b>THIS IS THE HEADER</b></p>
<a onclick="loadPageBelow('page2.php')">Click to goto page 2</a>
<div id="content">
<?php
include("starter.html");
?>
</div>
</body>
</html>
starter.html
<p>Welcome to the homepage</p>
page2.php
<canvas id="canvas" width="200px" height="200px">HI</canvas>
<script type="text/javascript" src="script.js"></script>
<script>
leggo();
</script>
script.js
function leggo()
{
var ctx = document.getElementById('canvas').getContext('2d');
ctx.fillRect(0,0,100,100);
}
Um Web-Server laufen, wie ich gehe mit den Programmen in den Ordner tue und php -S localhost:8000
in das Terminal eingeben. Dann gehen Sie den Browser und geben Sie http://localhost:8000/heading.php
--------------------------------------- BEARBEITEN ---------------------------------------
Ich machte den AJAX-Anruf verwenden jquery:
$(document).ready(function(){
$("a").click(function() {
$("#content").load("page2.php");
});
});
Und jetzt bekomme ich den Fehler:
Synchron XMLHttpRequest auf dem Hauptthread wegen seiner schädlichen Auswirkungen veraltet ist auf die Erfahrung des Endbenutzers. Weitere Informationen finden Sie unter https://xhr.spec.whatwg.org/.
Das kann etwas anderes sein. Jede mögliche Hilfe würde sehr geschätzt werden
innerHTML- für das Hinzufügen von HTML auf der Seite verwendet wird, ist in Ordnung, aber wenn es JavaScript enthält, wird es nicht ausgeführt werden, oder zumindest Cross-Browser, wenn es funktioniert. jQuery verwendet einen Workaround dafür, der bei meinen Tests nicht wirklich versagt hat. Probieren Sie es selbst aus: '$ ('body'). Append ('');' – Ultimater
Wohin würde diese Zeile im Code gehen? Ich bin ziemlich neu in all dem Zeug. Warum sollte das Aufrufen des Skripts von jQuery anders sein als das Aufrufen von js mit js? - @Ultimater – Jetstream5500
jQuery filtert zuerst den HTML-Code, entfernt JavaScript, speichert es dabei, bevor es den HTML-Code an die Seite anfügt, und bewertet dann das entfernte Javascript. Was auch immer Workaround in jQuery geschrieben haben, ist mir noch nicht gelungen. – Ultimater