Ich habe ein Problem mit getElementsByTagName in IE (7 und 8).Ajax mit PHP und XML, getElementsByTagName IE Problem
Ich habe eine Adressensuche, die jede vorgeschlagene Adresse (als eine XML-Zeichenfolge) in eine PHP-Sitzungsvariable zurückgibt, auf die dann mithilfe einer AJAX-Funktion zugegriffen wird, die die angeforderte Sitzungsvariable zurückgibt.
Jede Sitzung Variable wird in Schritt 1 der ajax Adressensuche gesetzt (I habe, ohne die Zeichencodierung mit versucht und mit UTF-8):
$_SESSION['addrHint_' . $k1] = '<?xml version="1.0" encoding="ISO-8859-1"?>';
$_SESSION['addrHint_' . $k1] .= '<Address>';
$_SESSION['addrHint_' . $k1] .= '<Postcode>' . $v1->Postcode . ' </Postcode>';
$_SESSION['addrHint_' . $k1] .= '<Line1>' . $v1->Line1 . ' </Line1>';
$_SESSION['addrHint_' . $k1] .= '<Line2>' . $v1->Line2 . ' </Line2>';
$_SESSION['addrHint_' . $k1] .= '<Line3>' . $v1->Line3 . ' </Line3>';
$_SESSION['addrHint_' . $k1] .= '</Address>';
Und dann in Schritt 2 abgerufen:
header('Content-Type: text/xml');
print_r($_SESSION['addrHint_'.$_REQUEST['addr']]);
In dem AJAX js, wenn der Staat bereit ist, führt er unter anderem ähnlichen Zeilen Code, dies:
var xmlDoc = xmlHttp.responseXML;
var xmlRoot = xmlDoc.documentElement;
var postcode = xmlRoot.getElementsByTagName("Postcode")[0].childNodes[0].nodeValue;
document.forms[0]["address"+addr+"_Postcode"].value = postcode.substring(0, postcode.length-1);
(Es macht eine ähnliche Sache für jede Zeile der Adresse.) Das Länge-1-Snippet ist da, weil ich an jedes Element ein Leerzeichen anhängen musste, um ein Problem zu stoppen, das ich hatte, wenn ein Element null war.
Es funktioniert gut in Firefox, aber überhaupt nicht in IE. Ich habe seit dem Googeln und fand eine Reihe von Ergebnissen auf den ersten 5 Seiten, aber keine Lösungen. Ich wäre sehr dankbar, wenn irgendjemand etwas dazu beitragen könnte.
Vielen Dank im Voraus.
Danke für die schnelle Antworten unten, ich habe seitdem das Problem verursacht, wenn es keine Zeile z. B. der Adresse gibt, bricht es das Skript, anstatt in die nächste Zeile zu überspringen. Ich dachte, ich hätte dieses Problem durch Anhängen von Leerzeichen an jeden Nullwert sortiert. Selbst wenn sie null wären, hätte sie einen Rückgabewert. – bcmcfc