Bonjour à tous
je crée actuellement un site avec un div principal destiné à recevoir des pages php avec AJAX via mon menu. Tout se passe bien, voici ma fonction :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 function affichePage(url, div){ var xhr_object = null; if(window.XMLHttpRequest) xhr_object = new XMLHttpRequest(); else if (window.ActiveXObject) xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); xhr_object.open("GET", url, true); xhr_object.onreadystatechange = function(){ if ( xhr_object.readyState == 4 ){ document.getElementById(div).innerHTML = xhr_object.responseText; evalueScripts(div); } } xhr_object.send(null); }
Le problème c'est que mon js n'est pas interprété...
Du coup, en fouillant sur cette FAQ, j'ai trouvé pourquoi (fonction eval) et j'ai récupéré le code, je l'ai adapté à mes besoins ce qui donne :
Code:
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 function getXMLHTTP(){ var xhr=null; if(window.XMLHttpRequest) // Firefox et autres xhr = new XMLHttpRequest(); else if(window.ActiveXObject){ // Internet Explorer try { xhr = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e1) { xhr = null; } } } else { // XMLHttpRequest non supporté par le navigateur alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); } return xhr; } function affichePage(url, div) { var _xmlHttp = getXMLHTTP(); _xmlHttp.open("GET", url, true); _xmlHttp.onreadystatechange=function() { if(_xmlHttp.readyState==4 && _xmlHttp.responseText) { document.getElementById(div).innerHTML=_xmlHttp.responseText; evalueScripts(div); } }; // envoi de la requête _xmlHttp.send(null) } function evalueScripts(targetId) { var mesScripts = document.getElementById(targetId).getElementsByTagName("script"); for (var i=0; i<mesScripts.length; i++) { eval(mesScripts[i].innerHTML); } }
Et là c'est bon mon js est correctement interprété sauf que la réponse AJAX ne s'affiche plus dans mon div mais dans ma page entière et je vois pas pourquoi...:?
Merci de votre aide