11548 sujets

JavaScript, DOM et API Web HTML5

bonjour à propos d'ajax. J'ai un big soucis donc je vous explique pour éventuellement avoir les conseils d'un génie d'AJAX.

J'utilise ajax pour obtenir une execution fluide, la tache s'effectuait auparavant avec 4 pages. La tache consiste à donner un avis sur un produit en cliquant sur un lien se situant juste en dessous.

Le prob ce situe après une première execution, et sous IE. Afin la fin de mon execution en Ajax, je termine en affichant uniquement une message comme quoi l'execution s'est bien passée. Ensuite on peut consulder des autres pages (page contenant des produits), et si on y retourne sur le lien pour redérouler l'exec AJAX:
- Sous firefox pas de soucis l'exec se déroule correctement
- par contre sous IE, l'exec ne se produit pas car il y a une erreur au niveau de la ligne content.innerHTML, IE n'arrive plus à executer cette ligne.


Je voudrais savoir comment résoudre ce problème, et par la même occassion comprendre pourquoi cela se produit. Voici le code de ma fonction AJAX et la ligne qui pose problème est signalée en gras.

Merci pour votre aide


<script type='text/JavaScript'>
/**
* Permet d'envoyer des données en GET ou POST en utilisant les XmlHttpRequest
*/
function sendData(data, page, method)
{
    if(document.all)
    {
        //Internet Explorer
        var XhrObj = new ActiveXObject("Microsoft.XMLHTTP") ;
    }//fin if
    else
    {
        //Mozilla
        var XhrObj = new XMLHttpRequest();
    }//fin else

    //définition de l'endroit d'affichage:
    var content = document.getElementById("zone_avis");

    //si on envoie par la méthode GET:
    if(method == "GET")
    {
        if(data == 'null')
        {
            //Ouverture du fichier sélectionné:
            XhrObj.open("GET", page, true);
        }//fin if
        else
        {
            //Ouverture du fichier en methode GET
            XhrObj.open("GET", page+"?"+data, true);
        }//fin else
    }//fin if
    else if(method == "POST")
    {
        //Ouverture du fichier en methode POST
        XhrObj.open("POST", page);
    }//fin elseif

    //Ok pour la page cible
    XhrObj.onreadystatechange = function()
    {
        if (XhrObj.readyState == 4 && XhrObj.status == 200)
		    
			//document.getElementById("zone_avis").innerHTML = XhrObj.responseText ;
            content.innerHTML = XhrObj.responseText ;
			
    }    

    if(method == "GET")
    {
        XhrObj.send(null);
    }//fin if
    else if(method == "POST")
    {
        XhrObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
        XhrObj.send(data);
    }//fin elseif
}//fin fonction SendData

</script>

Ton script ne semble pas contenir d'erreur, il y a juste un point pas très partinent mais sinon ça m'a l'air tout bon.
Il s'agit peut-être d'un problème de cache. Essaie d'envoyer une variable qui change à chaque requête pour vérifier, le timestamp par exemple.