Bonjour,
Je réalise actuellement un site et je veux utiliser Ajax via JQuery.
Pour ceci, chaque lien appelant une nouvelle page passe par ma fonction MyAjax qui renvoie le contenu à parseXML, je vous colle le code source :
la page ajax.php renvoie en XML le contenu de la page par exemple :
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 function myAjax(prmPage, prmParam) { var page = 'ajax.php?page='+prmPage+prmParam ; $.ajax({ type: "GET", url: page, dataType: "xml", complete : parseXml }); } function parseXml(prmData){ //var xml = prmData.responseXML ; var xml = prmData.responseText ; alert(prmData.responseText) ; $(xml).find('item').each(function(){ var type = $(this).attr('type') ; var texte = $(this).html() ; if(type == 'div') { var id = $(this).attr('name') ; $('#'+id).html(retireCdata(texte)) ; }else if(type == 'css') { $('head').append('<link type="text/css" rel="stylesheet" href="'+texte+'" />') ; }else if(type == 'script') { $.ajax({ type: "GET", url: texte, dataType: "xml", complete : myIncludeScript }); }else if(type == 'javascript') { var js = retireCdata(texte) ; eval(js) ; } }) ; }
Une fois la page envoyée et récupérée, le XML va dans ParseXML, jusque là tout va bien : ca marche sur Firefox.
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <?xml version="1.0" encoding="UTF-8"?> <root> <item type="css">site/public/css/style.css</item> <item type="div" name="page"><![CDATA[<div id="menu_droite"> page test </div>]]></item> <item type="javascript">scroll_up("menu_droite");</item> </root>
Mon premier soucis, pour le faire fonctionner sur Firefox, je dois récupérer le xml en faisant prmData.responseText, si je fais un prmData.responseXML, le find() ne me retourne rien et ca ne marche donc pas.
Mon second soucis c'est que IE 7, je n'ai aucune erreur de script mais quelque soit le type de response choisi, il ne me trouve rien.
J'ai essayer avec du code plus simple du style :
et là ca fonctionne sur IE comme sur FF.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <div> <span>Span 1</span> <span>Span 2</span> </div> <script> $('div').find('span').each(function(){alert($(this).html);}) ; </script>
Je sèche car j'ai essayé de trouver la solution via internet et tout semble concordé.
Si quelqu'un a une idée...
Partager