Bonjour,
Je me permets de demandez votre aide suite à la découverte d'un problème qui me bloque depuis plusieurs heures déjà.
J'ai développé une application qui utilise ajax pour récupérer un contenu xml, qui contient des "ordres" que javascript devra suivre par la suite.
En local, tout fonctionne parfaitement.
En ligne, tout fonctionne, sauf IE 6 qui n'arrive pas à accéder aux propriétés du responseXML.
Voici le code test que j'utilise :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <script type="text/javascript" src="jquery-1.3.2.js"></script> <script type="text/javascript"> function test() { alert('click'); $.ajax({ type: "POST", url: 'test.php', data: "", async: true, dataType:"xml", success:function (xml, text) { alert('OnSucces'); alert("Rep= "+text); fin(xml); }, complete:function(xmlHttpReq, text) { alert("OnComplete"); alert("Rep= "+text); fin(xmlHttpReq.responseXML); } }); } function fin(xml) { alert("NB= "+xml.getElementsByTagName('callback').length); } </script> </head> <body> <a href="#" onclick="test(); return false">Test</a> </body> </html>Le scénario normal est donc l'apparition des messages Click / OnSuccess / Rep= success / Nb = 2 / OnComplete / Rep= success / Nb=2
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <?php header("Content-Type: text/xml; charset=utf-8"); echo '<?xml version="1.0" encoding="UTF-8"?> <xjax> <callback>test</callback> <callback>test2</callback> </xjax>'; ?>
Sur IE6 en ligne, je n'ai que Click/ OnComplete / Rep= parserror / Nb=0.
- J'ai essayé pas mal de bidouilles : changer le datatype de xml vers html, le onSuccess se lance bien mais il m'est alors impossible de manipuler le XML
- Idem en changeant le header php par du html, même résultat.
- J'ai essayé sans jQuery, avec une class ajax plus artisanale : le résultat est le même : on arrive dans le onComplete mais impossible de parcourir l'arbre xml.
- Je vous ajoute à la fin du fichier les entête de ma requête ajax, peut être que vous y trouverez quelque chose qui ne va pas ( le gzip par ex )
- PhpInfo du serveur attaché au message
- Dans le onComplete, envoyer directement xml ou xml.responseXML ne change rien pour IE6.
Auriez-vous une piste à me donner pour résoudre ce problème ?
Merci beaucoup pour votre aide !
Réponse
Date Wed, 14 Oct 2009 07:12:43 GMT
Server Apache
X-Server-ID 40
Vary Accept-Encoding
Content-Encoding gzip
Content-Length 152
Keep-Alive timeout=1, max=100
Connection Keep-Alive
Content-Type text/xml; charset=utf-8
Requête
Host ###
User-Agent Mozilla/5.0 (Windows; U; Windows NT 6.1; fr; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 FirePHP/0.3
Accept application/xml, text/xml, */*
Accept-Language fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding gzip,deflate
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive 300
Connection keep-alive
X-Requested-With XMLHttpRequest
Referer ###
Content-Length 0
Content-Type text/plain; charset=UTF-8
PHPSESSID=6d446434965ef86312ad1c80fb6771a3
Partager