face-recognition.js/public_html/js/lib/ajax.js

61 lines
2.5 KiB
JavaScript

/***************************************/
/* */
/* GESTIONNAIRE D'OPTIMISATION DES */
/* RESSOURCES ET DE */
/* NAVIGATION EN AJAX */
/* */
/* Développé par {xdrm} */
/* */
/* GITHUB github.com/xdrm-brackets/ */
/* */
/***************************************/
var AjaxManager = function(){};
AjaxManager.prototype = {
xhr: [], // tableau d'objets pour les requêtes ajax
/* =======================================================================
Cette fonction effectue une requête Ajax (compatible à partir de IE5)
PARAMETRES:
- pLink<string> le lien à charger
- pHandler<function> une fonction qui s'éxécutera avec la réponse de la requête passée en paramètre (voir exemples dessous pour pHandler)
- pMethod<string> type de méthode, vaut 'POST' ou 'GET' et vaut 'POST' par défaut ou s'il n'est pas renseigné
- pForm<FormData> formulaire de type FormData() contenant les données à envoyer (uniquement en POST), si pForm vaut GET les données doivent être passées dans l'URL
========================================================================== */
send: function(pLink, pHandler, pMethod, pForm){
// on efface les requêtes qui sont terminées et on push une nouvelle
for( var i = 0 ; i < this.xhr.length ; i++ ){
// if( this.xhr[i].readyState == 4 ) // si terminée
this.xhr = this.xhr.slice(0,i-1).concat(this.xhr.slice(i,this.xhr.length-1)); // suppression entrée
}
var index = this.xhr.push( (window.XMLHttpRequest) ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHttpRequest') ) -1;
this.xhr[index].onreadystatechange = (function(){
if( this.xhr[index].readyState == 4 ){ // si la requête est terminée
if( [0,200].indexOf(this.xhr[index].status) > -1 ) // si fichier existe et reçu
pHandler(this.xhr[index].responseText);
else // si code d'erreur retourne null
pHandler();
}
}).bind(this);
// gestion de la méthode
var method = ( typeof pMethod == 'string' && /^POST|GET$/i.test(pMethod) ) ? pMethod.toUpperCase() : 'POST';
// gestion du formulaire si la méthode est POST
var form = ( method == 'POST' && typeof pForm == 'object' && pForm instanceof FormData ) ? pForm : null;
this.xhr[index].open( method, pLink, true );
this.xhr[index].send( form );
return this;
}
};
var AJAX = new AjaxManager();