J'ai un problème avec getElementsByTagName dans IE (7 et 8).
J'ai une recherche d'adresses qui renvoie chaque adresse suggérée (sous forme de chaîne XML) dans une variable de session PHP, à laquelle on accède ensuite en utilisant une fonction AJAX qui renvoie la variable de session demandée.
Chaque variable de session est définie à l'étape 1 de la recherche d'adresse ajax (j'ai essayé sans l'encodage des caractères et avec 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>';
Puis il est récupéré à l'étape 2 :
header('Content-Type: text/xml');
print_r( $_SESSION['addrHint_'.$_REQUEST['addr']] );
Dans le js AJAX, lorsque l'état est prêt, il exécute, parmi d'autres lignes de code similaires, ce qui suit :
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);
(Il fait la même chose pour chaque ligne de l'adresse.) L'extrait length-1 est là parce que j'ai dû ajouter un espace à chaque élément pour mettre fin à un problème que je rencontrais lorsqu'un élément était nul.
Cela fonctionne bien dans Firefox, mais pas du tout dans IE. J'ai depuis cherché sur Google et j'ai trouvé un certain nombre de résultats parmi les 5 premières pages, mais aucune solution. Je serais très reconnaissant si quelqu'un pouvait m'éclairer à ce sujet.
Merci d'avance.