Salut,
Je vais vous parler d'un pb sur lequel je viens de plancher 2 jours sans trouver la solution sur le net. Je me suis dit que si qqun tombait dessus, ca pourrait bien l'aider de trouver un post avec la solution !
On imagine une page html contenant ceci :
Code :
- <script language="Javascript">
- <!--
- //// Fonction permettant d'apeller une page php (target) en lui passant des parametres (params) et d'afficher son contenu dans un div (div)
- function AjaxPostAndPrintResInDiv(target, params, div)
- {
- var OAjax;
- if (window.XMLHttpRequest)
- OAjax = new XMLHttpRequest();
- else if (window.ActiveXObject)
- OAjax = new ActiveXObject('Microsoft.XMLHTTP');
- OAjax.onreadystatechange = function()
- {
- if (OAjax.readyState == 4 && OAjax.status==200)
- document.getElementById(div).innerHTML = OAjax.responseText;
- }
- OAjax.open("POST", target, true);
- OAjax.setRequestHeader('Content-type','application/x-www-form-urlencoded');
- OAjax.send(params);
- }
- -->
- </script>
- <a href="#"
- onclick="AjaxPostAndPrintResInDiv('miniAddElem.php', 'aff=toto', 'RubriqueLinkDiv');">
- Ajout contenu div
- </a>
- <div id="RubriqueLinkDiv">
- <!-- résulat de la requete ajax -->
- </div>
|
la page miniAddElem.php est une page quelquonque renvoyant un resultat quelquonque en fonction du contenu des params que l'on lui passe...
Ce code fonctionne bien sous firefox, seamonkey, opera. Sous ie cela me sort une erreur de type inconnue
Apres moultes recherches j'ai déterminé que c'était le
document.getElementById(div).innerHTML = OAjax.responseText; |
qui posait un pb. A Priori Ie ne m'autorise pas à mettre le contenu de OAjax.responseText dans document.getElementById(div).innerHTML.
En revanche ce que je ne m'explique pas, c'est qu'il m'autorise à faire
document.getElementById(div).innerHTML = "blah blah les fleursetc..."; |
En cherchant tout les moyens possible de modifier le contenu d'une page en javascript je suis tombé sur la methode appendChild.
en transformant la ligne :
Code :
- document.getElementById(div).innerHTML = OAjax.responseText;
|
par :
Code :
- var Ndiv = document.createElement("div" );
- Ndiv.innerHTML = OAjax.responseText;
- document.getElementById(div).appendChild(Ndiv);
|
Mircale, cela fonctionne !
Je précide que, parmis mes moultes essais, j'avais tenté auparavant de passer par une variable de type texte temporaire sans succes.
Je précise aussi pour le puristes que ceci est un bout de code pour illustrer le principe, il n'est donc pas equipé de tout les tests permettant une execution fiable.
Message édité par notod le 21-08-2008 à 11:10:46