[AJAX] Script multi navigateur ajax fonctionnel javascript
Alors avec cette fonction, il est possible d'appeler un page ou d'envoyer des formulaires en ajax dans une cellule ID avec une page de résultat contenant des fonctions java-script sans aucun problème sur tous les navigateurs.
Voici le script :
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 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| function donnee_get(form1)
{
var data1 = "";
var forma = document.getElementById(form1);
var elements = forma.elements;
for(var i=0; i<forma.length; i++)
{
data1 += elements[i].name + "=" +escape(elements[i].value);
if((i+1)<forma.length){data1+="&";}
}
return data1;
}
function post_get(fichier,div,method,form)
{
var xhr=null;
var data="null";
if(form!="null")
{
if(method=="GET")
{
data=form;
method="POST";
}
else{data = donnee_get(form);}
}
if (window.XMLHttpRequest){xhr = new XMLHttpRequest();}
else if (window.ActiveXObject)
{
try {xhr = new ActiveXObject("Msxml2.XMLHTTP");}
catch (e){xhr = new ActiveXObject("Microsoft.XMLHTTP");}
}
else
{
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
xhr = false;
}
xhr.open( method,fichier,false);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send(data);
var c = document.getElementById(div);
c.innerHTML = xhr.responseText;
try
{
var l=c.getElementsByTagName('script').length
for(var j=0;j<l;j++)
{
var script = document.createElement('script');
script.type = 'text/javascript';
script.text = c.getElementsByTagName('script').item(j).text;
document.getElementsByTagName('head')[0].appendChild(script);
}
}
catch(e)
{
alert(e);
}
} |
Voici comment utiliser cette fonction :
// ces appels permettent d'exécuter le script contenu dans monfichier.php et d'afficher le retour dans la div d'id div_de_destination, ici il n'y a pas de paramètre. Ce sont les appels de base, ils me servent notamment pour faire les liens hypertextes :
post_get("monfichier.php", "div_de_destination", "GET", null)
post_get("monfichier.php", "div_de_destination", "POST", null)
// cet appel permet d'exécuter le script contenu dans monfichier.php et d'afficher le retour dans la div d'id div_de_destination, les données du formulaire sont récupérées et mises en forme (également encodées avec la fonction escape, équivalent de l'url_encode de php) par la fonction donnee_get puis sont transmises par la méthode POST :
post_get("monfichier.php", "div_de_destination", "POST", "mon_formulaire")
// cet appel permet d'exécuter le script contenu dans monfichier.php et d'afficher le retour dans la div d'id div_de_destination, les données du formulaire sont récupérées et mises en forme (également encodées avec la fonction escape, équivalent de l'url_encode de php) par la fonction donnee_get puis sont transmises par la méthode POST et les données a=1 et b=2 sont transmise par la méthode GET:
post_get("monfichier.php?a=1&b=2", "div_de_destination", "POST", "mon_formulaire")
En espérant que ceci aidera certain, bon script a tous ;)