Zunächst einmal ist dies nicht gerade der ideale Weg, um eine Seite einzurichten, aber es ist notwendig, ein Skript als 1 Datei zu verteilen.Firefox-Fehler 'Kein Element gefunden'
Ich habe einen PHP-Skript an der Spitze eines ansonsten XHTML-Dokuments mit Javascript, und unter bestimmten Bedingungen XHR verwenden, um eine Abfrage-String auf der Seite selbst zu senden. Der php an der Spitze wird dann aktiviert und speichert den übergebenen Inhalt als eine Sitzung und tötet sich dann selbst (exit()). Das XHR ist asynchron und wird nie überprüft, ob es Inhalt zurückgibt.
jedoch in Firefox 3, löst die Fehlerkonsole einen Fehler no element found
jedes Mal, wenn die XHR Anfrage gesendet wird. Auch wenn ich einen Exit wie exit('Done')
verwende, löst Firefox einen Syntaxfehler von (Done) aus, als ob er es in das sichtbare DOM einfügt. Dies scheint in Opera nicht zu passieren.
Gibt es einen besseren Weg, um eine Sitzung von einer bereits erzeugt XHTML-Seite zu speichern? Offensichtlich könnte ich XHR auf eine andere Seite, aber ich würde es vorziehen, alles auf einem Skript zu behalten. Behandelt Firefox XHR-Anfragen an sich selbst als Updates für das DOM? Ich weiß nicht, warum es diesen Fehler sendet.
aktualisiert Wie gesagt, thows nur firefox die Fehler, wenn der XHR Antrag gestellt wird. Die Seite ist XHTML-gültig und funktioniert fehlerfrei, es sei denn, die XHR-Anforderung wird an die Seite selbst gestellt.
ich mich gefragt, warum es den Fehler zu senden, weil es wirklich nicht alles zurück.
Hier ist ein Javascript-Schnipsel, die einen Ajax-Request von einem Objekt macht. Es erstellt ein XHR-Objekt ohne Rückruffunktion und sendet die Informationen. Es funktioniert ordnungsgemäß, wenn nicht auf dieselbe Seite verwiesen wird.
var saveState = { saveContent: function(updateActiveMenu) {
var sendState = new ajaxObject(gV.url);
if (!updateActiveMenu) {
var storageContainer = document.getElementById("StorageContainer").innerHTML;
var menu = document.getElementById("Nav").innerHTML;
sendState.update("Containerstring="+urlencode(storageContainer)+"&Nav="+urlencode(menu)+"&Active="+gV.activeMenuItem, 'POST', true); } }, }
und die PHP tut dies
if (isset($_REQUEST['Containerstring']) && isset($_REQUEST['Nav']) && isset($_REQUEST['Active'])) {
$_SESSION['Containerarray'] = (saveContainer(regulateEscapes(urldecode($_REQUEST['Containerstring']))));
$_SESSION['Navarray'] = (saveNav(regulateEscapes(urldecode($_REQUEST['Nav']))));
$_SESSION['Active'] = $_REQUEST['Active'];
exit('Done');
}
ich auch bewusst bin, sollte ich nicht innerHTML- verwenden, aber das ist eine andere Geschichte
Der Fehler ist dies
Error: no element found
Source File: http://localhost/ajax.php?1244648094055
Line: 1
Beachten Sie, dass der Fehler, während auf der p hp-Seite, die ich verwende, verweist auf eine Abfragezeichenfolge, die nie aufgerufen wird.
Es gibt einige Unstimmigkeiten in dem, was Sie beschreiben. Wenn xhr nie den zurückgegebenen Wert verwendet (was "Done" ist), dann kann es nicht in ein DOM eingefügt werden, oder? – SilentGhost
noch besser poste ein kleines Beispiel Ihres Codes. – SilentGhost
Warum legen Sie die relevanten Teile der Seitenquelle nicht hoch? –