// CLASS ajax_object : constructeur function ajax_object(){ if(window.XMLHttpRequest){ return new window.XMLHttpRequest; } else { try{ return new ActiveXObject("Msxml2.XMLHTTP"); } catch(e1){ try{ return new ActiveXObject("Microsoft.XMLHttp"); } catch(e2){ alert('XMLHttp non supporté par votre navigateur !'); return null; } } } } // CLASS httpRequest : constructeur function httpRequest(request,target,async){ if(async!=undefined){ this.async=async; } else { this.async=true; } this.request=request; this.target=target; this.counter=0; this.dontupdatetarget=false; this.xmlr=new ajax_object(); } httpRequest.prototype.set_request=function(r){ this.request=r; } // Fonction envoyant le résultat sur target si existe sinon l'affiche sous forme d'alerte. httpRequest.prototype.ajax_result=function(){ if(this.target){ if(!this.dontupdatetarget){ try{ this.target.innerHTML=this.xmlr.responseText; } catch(e){} } } this.onresult(this.xmlr.responseText, this.xmlr.responseXML, this.target); } // Fonction de rappel pour la methode send de l'objet xmlr httpRequest.prototype.callback=function(){ var _this=this; //this.target.innerHTML=this.xmlr.readyState; if(this.xmlr.readyState==4){ if(this.xmlr.status=="200"){ this.ajax_result(); } else { this.onerror(this.xmlr.status, this.target); } } } httpRequest.prototype.onprogress=function(){ //this.target.innerHTML='onprogress : '+this.counter++; } // Methode post httpRequest.prototype.exec=function(){ var _this=this; with(this.xmlr){ onreadystatechange=function(){_this.callback()}; open("GET",this.request,this.async); send(null); if(!this.async){ this.ajax_result(); return this.xmlr.responseText; } } } httpRequest.prototype.onresult=function(){} httpRequest.prototype.onerror=function(){}