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 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
| // Lorsque la requête réussit
Ajax.prototype.onComplete = function (response)
{
// si il y a un objet à remplir (this.idFillObj != "")
if (this.idFillObj != ""){
// insertion de response après le innerHTML de l'objet à remplir
if (this.append == "after") {
document.getElementById(this.idFillObj).innerHTML = this.inner+"<br />"+response;
// insertion de response avant le innerHTML de l'objet à remplir
}else if (this.append == "before"){
document.getElementById(this.idFillObj).innerHTML = response+"<br />"+this.inner;
// response remplace le innerHTML de l'objet à remplir
}else if (this.append == "no") {
document.getElementById(this.idFillObj).innerHTML = response;
}
//////////////////////////////
// récupération des scripts //
//////////////////////////////
// parseur de javascript
response = response.match(/(?:<script.*javascript.*>(?:[^<]+[\n\0\f\r]*)*<\/script>)/gi);
var mesScripts = "";
for(i = 0; i < response.length; i++){
if (response[i] != "") {
mesScripts += response[i];
}
}
mesScripts = mesScripts.replace(/(?:<script.*javascript.*>)|(?:<\/script>)/gi, "");
// fin du parser de javascript
// on récupère les entêtes d'éventuels fonctions
var entetesFonctions = mesScripts.match(/(?:function)\s*([^\)]*)\)/gi);
// si il y a des fonctions à instancier
// pour chaque entête
for( var j = 0; j < entetesFonctions.length; j++){
// on récupère le nom de la fonction
// on commence par enlever se qu'il y a devant le nom
entete = entetesFonctions[j].replace(/(?:function)\s*/gi, "");
// ensuite on enlève se qu'il y a après et on le stock dans
// nomFonction
nomFonction = entete.replace(/\(.*\)/gi, "");
// puis on récupère les paramètres eventuels de la fonction
params = entete.replace(/(?:.*\()|\)/gi, "");
// on reconstruit l'entête pour que la fonction
// soit instenciée correctement
entete = "window['"+nomFonction+"'] = function ("+params+")";
// création du model de l'entête de fonction à rechercher
// selon le nom de la fonction
pattern = new RegExp("(?:function)\\s*"+nomFonction+"\\s*\\([^\\)]*\\)","gi");
// remplacement de l'entête dans le script à évaluer
mesScripts = mesScripts.replace(pattern, entete);
}
// évaluation du script
eval(mesScripts);
}
// réinitialisation des variables pour éviter les conflits entre deux appels
this.asyn = true;
this.data = "";
this.url = "";
this.method = "POST";
this.returnFormat = "txt";
this.idFillObj = "";
this.inner = "";
this.append = "no";
} |