2010-06-16 6 views
0

J'ai un petit problème sur le navigateur IE (en fait sur Google Chrome aussi) Je possède ce js CodeAjax demande erreur sur IE

function createDoc(url) { 
    var xhttp = ajaxRequest(); 
    var currentLocationBase = window.location.href; 
    currentLocationBase = currentLocationBase.substr(0,currentLocationBase.lastIndexOf("/") + 1); 
    var u = currentLocationBase + url; 

    xhttp.open("GET", u, false); 
    xhttp.send(null); 

    var xml = xhttp.responseXML; 
    return xml; 
} 

/** 
* Builds an AJAX reques handler. 
* 
* @return The handler. 
*/ 
function ajaxRequest() { 
    var xhttp = null; 
    if (window.XMLHttpRequest) { 
     xhttp = new XMLHttpRequest(); 
    } else if (window.ActiveXObject){  
     // Internet Explorer 5/6 
     xhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
    } else { 
    } 
    return xhttp; 
} 

Dans Firefox ce code fonctionne très bien, mais pas dans IE et Google Chrome Il semble que l'erreur est donnée à la ligne

xhttp.open("GET", u, false); 

quelqu'un peut-il me aider à comprendre ce que je fais mal? Merci

+0

Quel est le message d'erreur? –

Répondre

0

Comme l'Ajax est asynchrone, vous devez gérer le code et la réponse dans le code onreadystatechange. Essayez w3schools examples

Il semble que vous envoyez la demande et juste après que la lecture du responseXML, il faut avoir des problèmes causant

xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText; 
    } 
    } 
xmlhttp.open("GET","ajax_info.txt",true); 
xmlhttp.send(); 
0

Pourquoi ne pas vous déployer jQuery? Livré avec optimisé AJAX stack et pas besoin de faire un reniflage spécifique au navigateur. Vous avez en effet atteint un plus grand poids d'application que l'inclusion dans les bibliothèques, mais cela en vaut sûrement la peine.

+0

Je ne veux pas ajouter de bibliothèque de frameworks. C'est une application qui n'a besoin d'être créée que par moi. – tinti