Cette fonction est le condensé de plusieur chaine de connection existante sur le net. Il existe des framework ajax qui font la même chose en mieux mais plus compliqué je pense... étant un adepte du plus simple possible, je l'utilise pour gerer mes appels ajax sur ce site.
<p>Cette fonction est le condensé de plusieur chaine de connection existante sur le net. Il existe des framework ajax qui font la même chose en mieux mais plus compliqué je pense... étant un adepte du plus simple possible, je l'utilise pour gerer mes appels ajax sur ce site.</p>
<hr id="system-readmore" />
entète du fichier ajax.php à adapter en fonction du mode
header("Pragma: no-cache");
header("Expires: 0");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-cache, must-revalidate"); //mode html
//header("Content-type: application/xml"); //mode XML
//header("Content-type: text/js"); //mode js
header("Content-Type: text/html; charset=iso-8859-1"); //vive les accents, ça evite un utf8_encode ...
connection AJAX et exemple de fonction d'utilisation.
/* utilisation de la fonction assez exhaustive mais l'appel du parseur xml est défini comme unique ... ça limite !
@author : un peu bcp de monde sur le web dont nL
@version : ? 1.0 ça ira ?
@mode : xml : on devra parser le resultat qui aura un header en xml
, html: on affiche en direct sur la page, le header sera du html
, js : on intérprete une requete au format JSON ( eval) le header sera un js
@typ : value: un objet recois le resultat (input ...)
, innerHTML: le contenu d'un id recois le resultat
function ajax( param ){
var c = document.getElementById("scroll");
var xmlhttp = getHTTPObject(c,"html","innerHTML","function_suivante()");
xmlhttp.open("POST", "ajax.php",true);
xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xmlhttp.send("param="+param);
}
*/
function getHTTPObject(c,mode,typ,action) {
var global = this;
var xmlhttp = false;
/* Compilation conditionnelle d'IE */
/*@cc_on
@if (@_jscript_version >= 5)
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E){
xmlhttp = false;
}
}
@else
xmlhttp = false;
@end @*/
/* on essaie de créer l'objet si ce n'est pas déjà fait */
if (!xmlhttp && typeof XMLHttpRequest != 'undefined'){
try {
xmlhttp = new XMLHttpRequest();
// Évite un bug du navigateur Safari :
if (xmlhttp.overrideMimeType) {
xmlhttp.overrideMimeType("text/xml");
}
} catch (e) {
xmlhttp = false;
window.status("Votre navigateur ne prend pas en charge l'objet XMLHTTPRequest.");
}
}
if (xmlhttp){
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState == 4){ /* 4 : état "complete" */
if (xmlhttp.status == 200) { /* 200 : code HTTP pour OK */
switch(mode){
case "js":
eval(xmlhttp.responseText);
if (typ == "innerHTML"){
c.innerHTML = "";
} else {
c.value = "";
}
break;
case "xml":
parsexml(xmlhttp.responseXML,c);
break;
default:
if (typ == "innerHTML"){
c.innerHTML = xmlhttp.responseText;
} else {
c.value = xmlhttp.responseText;
}
}
if (action != '')
eval(action);
} else {
window.status = xmlhttp.status + " " + xmlhttp.statusText;
}
} else {
window.status = xmlhttp.readyState;
}
}
}
return xmlhttp;
}
function parsexml(data){
/* parsing des données xml ... */
}