fonction Ajax qui marche très bien sous IE mais pas sous Mozilla

Mammouth du PHP | 804 Messages

23 mai 2009, 11:35

Bonjour,

Comme je le dis dans le titre
J'utilise cette fonction sous internet exporer sans problème, mais sous mozilla ca ne fonctionne pas du tout, j'aimerai vraiment comprendre pourquoi ?

Code : Tout sélectionner

function getXhr(){ 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) { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } } else { // XMLHttpRequest non supporté par le navigateur alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); xhr = false; } return xhr } function go() { var xhr = getXhr(); xhr.onreadystatechange = function() { if(xhr.readyState == 4 && xhr.status == 200) { document.getElementById('affiche').innerHTML = xhr.responseText; } } xhr.open("POST",'test.php',true); xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); xhr.send(); }
merci d'avance

Aurélien Barbier-Accary
Invité n'ayant pas de compte PHPfrance

31 déc. 2009, 17:18

il faut inverser l'ordre de tes tests au début dans tes if et try/catch.
Utilise plutôt ceci :
var xhrObject = null;
try {
xhrObject = new ActiveXObject('Msxml2.XMLHTTP');
} catch (err1) {
try {
xhrObject = new ActiveXObject('Microsoft.XMLHTTP');
} catch (err2) {
try {
xhrObject = new XMLHttpRequest();
}
catch (err3) {
alert('Your Browser does not manage XMLHttpRequest nor ActiveXObject/XMLHTTP objects');
return null;
}}}
return xhrObject ;