Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

[GAG] GESTION AJAX GÉNÉRALISÉE


Information sur la source

Catégorie :Navigation Classé sous : ajax, xmlhttprequest, php Niveau : Débutant Date de création : 04/06/2008 Date de mise à jour : 21/06/2008 14:31:17 Vu / téléchargé: 3 540 / 197

Note :
8 / 10 - par 1 personne
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (26)
Ajouter un commentaire et/ou une note


Description

° pour gérer tous les appels possibles avec AJAX °
==================================================

 

Source

  • pour utiliser :
  • [ var recu = ] GAG (
  • url à appeler,
  • [ paramètres à transmettre ],
  • [ 'POST' ou 'GET' ],
  • [ true ou false, asynchrone ou synchrone ] ,
  • [ function à appeler après réponse d'Ajax ] ,
  • [ javascript à interpréter ? ] ,
  • [ mémoriser ce javascript ? ],
  • [ id d'un div de travail ]
  • )
pour utiliser :

[ var recu = ] GAG ( 
url à appeler, 
[ paramètres à transmettre ], 
[ 'POST' ou 'GET' ], 
[ true ou false, asynchrone ou synchrone ] , 
[ function à appeler après réponse d'Ajax ] , 
[ javascript à interpréter ? ] , 
[ mémoriser ce javascript ? ],
[ id d'un div de travail ] 
)

Conclusion

peut-être pas testé toutes les éventualités ?
s'il reste des bugs, merci de me le signaler.

index.htm     la page d'exemples d'utilisation
GAG.js        le javascript
*.php         les exemples coté php

 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

21 juin 2008 14:31:18 :
améliorations, modifications, corrections ... suite aux idées,messages,contacts,remarques, conseils... reçus en privé ( merci à eux ) mémorisation ou pas du javascript... j'ai aussi ajouté le ; manquant ;o)

Commentaires et avis

signaler à un administrateur
Commentaire de nicomilville le 04/06/2008 20:08:38

Salut bultez,

comme dit sur l'autre source, en ce moment je suis un peut débordé donc je regarderai en profondeur ta source ce week-end et je te mettrais une note par la même occasion, pour l'instant je n'ai rien vu d'alarmant mais peut être que ça va venir !!!

a++

signaler à un administrateur
Commentaire de snakehill le 04/06/2008 21:56:44 8/10

j'aime bien ! :)
Je dis ça parceque à quelques choses près c'est exactement le même source que j'utilise pour mes sites en AJAX ! :D

signaler à un administrateur
Commentaire de bultez le 05/06/2008 12:02:37


quand on voit un truc qui ressemble à ce qu'on
a fait : on trouve ça pas mal ! et on aime ! ;o))
t'aurais du nous mettre ça ici,
ça m'aurait évité de réinventer ;o)

signaler à un administrateur
Commentaire de Steph666 le 05/06/2008 16:32:38

Bonjour,

Ca a l'air de bien se tenir, il me semble que tu fais appel à une fonction trt() qui n'est nulle part dans tes scripts. Sinon c'est bien fait.

Quitte à pas réinventer la roue, tu as déjà tout ça dans prototype.js

signaler à un administrateur
Commentaire de bultez le 05/06/2008 16:54:11


salut steph

>>tu as déjà tout ça dans prototype.js
va falloir que je regarde tous ces
"framework"...  un de ce jours...

trt ? ce ne serait pas la function donnée par
l'appelant qu'on peut exécuter lorsque la
réponse d'ajax est revenue ( en asynchrone ) ?

@+

signaler à un administrateur
Commentaire de ralecul le 08/06/2008 23:22:55

Salut,
Je te conseille de passer à Prototype, ça fait même le café !
J'ai créé une version light de la classe Ajax de Prototype :
http://www.javascriptfr.com/codes/CLASSE-AJAX-PROTOTYPE-ROCKS_46941.aspx

Cette version light ne doit pas être utilisée en production, il vaut mieux se fier aux développeurs de Prototype...
Son but est de montrer que Prototype est facile à utiliser et surtout que Prototype est plus sur et puissant qu'un script perso.

@+

signaler à un administrateur
Commentaire de bultez le 09/06/2008 07:22:44


un commentaire sans aucun intérêt,
n'ayant pour but qu'une pub mal venue.

si j'avais à faire un choix de quelque chose
pour faire du développement professionnel,
ce ne serait sûrement pas une simple collection
de fonctions mais un générateur d'applications
par exemple.

quand à ton appréciation sur des points ridicules
comme la sureté (?) la puissance (?), ta version
ligth d'un truc copié depuis prototype, ou le
meilleur niveau des ses développeurs  :
franchement, je m'en tamponne le coquillard.

signaler à un administrateur
Commentaire de XtremDuke le 09/06/2008 16:32:51

"ce ne serait sûrement pas une simple collection
de fonctions mais un générateur d'applications
par exemple."

Simple question, a quoi penses-tu ?

signaler à un administrateur
Commentaire de bultez le 09/06/2008 17:08:26


à rien en particulier XtremDuke,

pas confonté au problème, donc je n'ai pas cherché.

j'ai déjà utilisé ce genre de choses ( dans d'autres
configurations / circonstances / avec générateur de code sources
pour divers langages ou pas, sur mainframes par ex... ), et si
demain j'avais à manager  une équipe pour faire du développement
web, opter pour un  générateur serait sûrement ce que je ferais
en 1er.

je ne dis pas que ces "soit-disant framework"  ( terme bien
pompeux malgré tout ) ne sont pas excellents ! très loin de
là... au contraire, mais tant qu'à faire quelque chose
pour industrialiser le codage... autant faire ce qu'il faut.

@+

signaler à un administrateur
Commentaire de XtremDuke le 09/06/2008 17:15:07

Je ne suis pas ici pour polémiquer sur l'utilisation ou non des frameworks mais ne connaissant pas les 'générateurs de code sources', je me serai bien documenté sur le sujet. Tu aurais un nom en tête histoire de me coucher moins bête ?

signaler à un administrateur
Commentaire de ralecul le 09/06/2008 21:01:26

>>va falloir que je regarde tous ces "framework"...  un de ce jours...
Tu semblais désireux de passer à Prototype, voila pourquoi j'ai posté un lien vers ma source...
Sinon si tu tiens absolument à ce que je commente ta source, voici quelques remarques :

1.
Erreur lors de la récupération de l'objet XmlHttpRequest.
Tu testes dans l'ordre :
ActiveXObject('Microsoft.XMLHTTP') -> ActiveXObject('Msxml2.XMLHTTP') -> XMLHttpRequest()
Or il faut tester XMLHttpRequest() en premier car il est supporté par défaut par IE7.
Tu fais un alert si toutes les tentatives échouent, c'est pas très pro...

2.
En mode asynchrone (syn=true ;-) si trt n'est pas défini il doit y avoir une erreur...

3.
Si le send échoue tu fais un alert, toujours aussi pro...

4.
Ta méthode d'évaluation de script est très intéressante (Point positif de la source)
Seulement elle a la fâcheuse tendance d'encombrer le DOM ...
Essaye de remplacer le contenu de JSHtm.php par
<script type="text/javascript">
function msg(txt)
{ alert(txt); }
msg('html 1');
</script>
<h1>Hello World</h1>
<script type="text/javascript">
msg('html 2');
</script>

5.
Les options de ta fonction GAG ne sont pas réellement facultatives.
Je trouve que le passage d'option "à la prototype" est quand même beaucoup plus joli.
Cela reste une question de gout, je l'avoue...

6.
Anecdotique :
- points-virgules manquant (fin de onreadystatechange)
- les noms de variables de plus de 3 lettres sont interdits, zut j'étais pas au courant...
- commentaires un peu trop stylés...

signaler à un administrateur
Commentaire de bultez le 10/06/2008 06:13:58


>>Sinon si tu tiens absolument à ce que je commente ta source,

pas du tout, tu n'apportes jamais rien de constructif,
ce n'est pas la 1ère fois avec moi et d'autres.
je te trouve un peu trop pédant.
tente de faire toi-même plutôt que d'intervenir sur
des sources et de finalement ne proposer qu'une
solution "soit-disant améliorée".

signaler à un administrateur
Commentaire de bultez le 10/06/2008 06:28:43


navré XTremDuke, ça remonte à quelques années,
dans un contexte totalement différent, et je
n'ai plus les noms en tête. et ils n'existent
peut-être plus du tout en l'étatt d'ailleurs.
>>Je ne suis pas ici pour polémiquer sur l'utilisation ou non des frameworks
moi non plus, nullement mon intention, ce serait ridicule.
je trouve simplement stupide de comparer prototype, qui fait
quoi, 100k  ? et mes 2 petites fonctions de 50 lignes !

signaler à un administrateur
Commentaire de bultez le 11/06/2008 15:35:06


ah ben... je n'avais même pas lu les élucubrations de l'énergumène...
faut quand que je réponde.. pour rire une peu !!!

>>Or il faut tester XMLHttpRequest() en premier
>>car il est supporté par défaut par IE7.
ben... je ne tiens pas à privilégier IE7 !
>>Tu fais un alert si toutes les tentatives échouent, c'est pas très pro...
euh... perso, je tente de faire des choses le plus simplement
possible, je ne suis pas un pro du codage, et ne le revendique pas.
1° essentiellement parce que je ne suis pas capable d'autre chose
2° accessoirement pour que tout à chacun puisse comprendre...
modifier, améliorer... c'est le but de CodesSources.
>>En mode asynchrone (syn=true ;-) si trt n'est pas défini il doit y
>>avoir une erreur...
euh... oui. ceux qui utilisent font de la programmation
ils comprendront, ce n'est pas une saisie d'un utilisateur.
>>Si le send échoue tu fais un alert, toujours aussi pro...
déjà dit : je ne suis pas un pro... du codage.
>>Ta méthode d'évaluation de script est très intéressante
>>Seulement elle a la fâcheuse tendance d'encombrer le DOM ...
ah ben tiens... exemple d'une une remarque totalement pédante !
ça part d'un vrai souci, j'ai posté une version qui ne cache
pas le div... ce qui est une erreur ( je vais rectifier
en 1 ligne ! )
me dire : cacher le div serait mieux, eut été plus simple  !
ou alors, tu veux parler d'autre chose, et là, met toi à mon
niveau, je suis un petit programmeur..
>>Les options de ta fonction GAG ne sont pas réellement facultatives.
ah ? j'ai des solutions pour faire autrement....
ici ( finiras-tu par comprendre ?? ), le but est de montrer
une utilisatiion d'AJAX, assez simple pour que
tous puissent comprendre, adapter, améliorer..
>>points-virgules manquant (fin de onreadystatechange)
ah dieu me tripote ! mea culpa ! j'avoue ma faute !
surtout que ça va faire drôlement planter tous les micros qui
utiliseraient ce script...
pour pénitence, je me flagellerai tous les matins, à l'aube,
neuf jours de rang
>>les noms de variables de plus de 3 lettres sont interdits
euh... si ça ne te convient pas, tu n'as pas un éditeur
qui sache faire :
remplacer tous les "prm" par
"parametres_javascript_transmis_au_php_avec_ajax'" ?
>>commentaires un peu trop stylés...
j'aime bien ce que tu dis.

bref, si tu peux d' abstenir d'intervenir sur
ce que je fais... ce serait très bien.

signaler à un administrateur
Commentaire de ralecul le 12/06/2008 00:33:20

Zut, faut que je m'abstienne de répondre aussi ?

Pour le XMLHttpRequest() : cela ne privilégie en rien IE7.
L'idée est que sous IE7 il y a à la fois l'objet natif et la version ActiveX (pour des raisons de rétrocompatibilité).
Donc une bonne pratique consiste à tester d'abord la présence d'un objet natif puis de la version ActiveX.
Car il se peut que, dans des versions ultérieures, IE ne supporte plus la version ActiveX.
Cela évite également à tous les autres navigateurs de tester une instanciation avec un ActiveX.
Il en va de même pour les méthodes addEventListener et attachEvent (de manière générale on teste les propriétés "W3C" puis les propriétés IE).

La méthode d'évaluation du script : il faut effectivement masquer ce div mais il y a autre chose.
A chaque fois que tu fais un appel ajax avec du js tu remplis ce div (et écrase son contenu).
Mais tu attaches également des éléments scripts au niveau du head de la page.
Donc si on utilise ce script avec un setInterval (comme un Ajax.PeriodicalUpdater) on se retrouve assez vite avec DOM encombré...
Dans Prototype la méthode evalScript possède des limitations que ta méthode n'a pas (définition de fonction supporté de manière détourné).
Cependant la méthode de Prototype effectue un eval du contenu de chaque balise script et ne les attachent pas au DOM de la page.
Voila pourquoi je disais que ta méthode a tendance à encombrer le DOM...

Les options facultatives : jette un coup d'oeil à ma Classe Ajax et tu verras que c'est facile à mettre en oeuvre.
Ca permet également de passer des callback facultativement (ta fonction trt pourrait ainsi être vraiment facultative).

//Voici un petit exemple de passage d'option "à la Prototype" :
function ImagePreloader(image, options) {

   var _options  = options || {}; //CAD que si options est undefined, _options vaut new Object();
   var _onLoad   = _options.onLoad   || false; //de même si _options.onLoad vaut undefined, _onLoad vaut false
   var _interval = _options.interval || 10;
   var _image    = new Image();
   var _that     = this;
   var _waiting;

   _image.src = image;

   if (_onLoad) //une fonction vaut true...
      _waiting = setInterval(checkload, _interval);

   function checkload() {
      if (_image.complete) {
         clearInterval(_waiting);
         _onLoad(_that, _image.src);
      }
   }

   this.getDim = function() {
      return { //celà retourne un nouvel objet avec deux propriétés : width et height.
         width  : _image.width,
         height : _image.height
      };
   };
}


//Utilisation de la classe ImageLoader
new ImagePreloader("img/exemple240.jpg", {
   interval : 20,
   onLoad : function(loader, image) {
      var dim = loader.getDim();
      alert(image + ' loaded ('+dim.width+'x'+dim.height+')');
   }
});

/*
//Egalement valide (ici options vaut undefined) :
new ImagePreloader("img/exemple240.jpg");

//Ou encore (ici c'est options.interval qui vaut undefined) :
new ImagePreloader("img/exemple240.jpg", {
   onLoad : function(loader, image) {
      var dim = loader.getDim();
      alert(image + ' loaded ('+dim.width+'x'+dim.height+')');
   }
});
*/

En espérant ne pas t'avoir trop dérangé avec mes remarques non constructives...

signaler à un administrateur
Commentaire de bultez le 12/06/2008 09:47:22


>>faut que je m'abstienne de répondre
j'aurais nettement préféré... même si, pour une fois,
il y a des choses intéressantes dans tes propos.
si le plonk existait ici, comme sur les News Groups,
tu le serais, plonké, pour moi.

>>espérant ne pas t'avoir trop dérangé
pas le choix, hélas.

signaler à un administrateur
Commentaire de XtremDuke le 12/06/2008 09:50:31

+1 pour ton commentaire sur XMLHttpRequest RALECUL.

Par contre, tu compares tout avec Prototype. Même si je soutiens les utilisateurs de Proto et que j'en suis un utilisateur avéré, il ne faut pas en faire la seule référence. Proto est un outil d'aide au développement Js, rien de plus...

signaler à un administrateur
Commentaire de bultez le 12/06/2008 13:23:27


>>Proto est un outil d'aide au développement Js, rien de plus...
XTremDuke++

je viens même de voir un gars qui est en train de faire le sien,
qui nous a fourni un  exemple, pour une utilisation d'un drag/drop,
et qui, mon foie, même s'il affirme qu'il n'est pas au terminé,
me semble réellement "pas mal" ( doux euphémisme  ! et si tant est
que je puisse porter un jugement sur quoi que ce soit )
http://www.javascriptfr.com/infomsg_PROBLEME-AVEC-ONMOUSEMOVE_1152185.aspx#5

signaler à un administrateur
Commentaire de XtremDuke le 13/06/2008 17:13:00

On s'occupe comme on peut ;)

http://siteecom.net/demo/drag.html
http://siteecom.net/demo/fx1.html
http://siteecom.net/demo/fx2.html
http://siteecom.net/demo/ajax.html
http://siteecom.net/demo/form.html

signaler à un administrateur
Commentaire de bultez le 21/06/2008 16:28:45


@XTremDuke
    au fait, en me promenant :
http://fr.wikipedia.org/wiki/Atelier_de_génie_logiciel
    pas été plus loin que cette 1ère page.
rien essayé, testé... des "produits cités" !
les commentaires sont un peu "restrictifs",
    est-ce la réalité ?
sinon ça se rapproche, un peu (?), de ce que j'entendais,
aux restrictions près.
peut-être n'emploie-je pas les "bons termes",
peut-être suis-je là, à coté de la plaque.
@+

signaler à un administrateur
Commentaire de XtremDuke le 23/06/2008 14:05:54

Salut Bultez,

J'ai jeté un coup d'½il sur le Wiki mais hélas je ne connais que 3 ou 4 des produits cités. D'ailleurs, je me demande bien ce que  Eclipse vient faire dans la liste des AGL.

Je n'ai pas très bien compris le sens de ta question. Pourrais-tu être un peu plus précis ?

signaler à un administrateur
Commentaire de bultez le 23/06/2008 14:18:18


>>je me demande bien ce que  Eclipse vient faire dans la liste des AGL.
on est bien d'accord

>>pas très bien compris le sens de ta question.
si tu parles de "est-ce la réalité" :
dans les commentaires, on y cause de bases de données
( relationnelle ). ce que j'utilisais ( et j'en ai
utilisé plusieurs  ) n'avait rien à voir. on pouvait,
mais ce n'était pas fondamental.

j'ai déjà lu plusieurs "restrictions" de
ce style sur wikipedia.
@+

signaler à un administrateur
Commentaire de XtremDuke le 23/06/2008 14:42:49

Je suis complètement Out (ce doit être la digestion) mais où parle-t-on de base de données ?

signaler à un administrateur
Commentaire de bultez le 23/06/2008 15:06:27


à le relecture, j'ai lu en diagonale :
Dictionnaire de Données pour l'AGL, et
Merise m'ont enduit d'erreurs
et non pas pour le développement du projet
( moins restrictif que je n'avais compris )
@+

signaler à un administrateur
Commentaire de rhan_659 le 30/07/2008 16:11:01

Bonjour

merci pour le code, simple, pratique et facile d'acces quand on ne maitrise pas le JS a font !

signaler à un administrateur
Commentaire de bultez le 30/07/2008 16:34:14


merci à toi pour
"simple" , "pratique" "facile d'acces"
c'est en général tout ce que je tente de faire, pas plus.
d'autres auraient plutôt pour devise :
pourquoi faire simple quand on peut faire compliqué.
chacun ses goûts et la caravane passe.

néanmoins, l'interprétation du javascript,
est à mon humble avis, "toujours" inutile,
et ne devrait "jamais" être utilisé ( sauf
cas exceptionnels/rarissimes ? et je demande à voir ! )
avec GAG ou avec les (soit-disant) framework.

@+

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Xmlhttprequest et php, comment garder sa session [ par benjiiim94 ] Bonjour, Je ne suis pas sûr d'avoir poster dans le bon forum, ce post aurait eu aussi sa place dans un forum php, merci de votre indulgence. Pour fa Rechargement d'objet "AJAX" [ par benjiman2 ] Bonjour !Voila, je commence tout juste a programmer en AJAX ...et voila mon probleme ...Je voudrai que chaque 2 secondes, la page se rafraichisse dans donne php dans un popup javascript dhtml ou ajax [ par speedylol ] bonjour, j aimerais ajouter une sortie de donn&#233;e php dans un popup en javascript ou lesdonn&#233;e d&#233;filerais dans ce popup, l'on ma dis que AJAX? Comment faire? [ par hawks_ttf ] Bonjour,Je me demandais comment faire le lien entre le JS et le PHP? Comment depuis un script JS, on peux lancer un requ&#232;te PHP, et comment on r& Client IRC php/javascript [ par thomvaill ] Bonjour tout le monde ;) Je suis en train de réaliser un client IRC en PHP avec les XMLHttpRequest du JavaScript, indispensables... Etant absolument n AJAX - XMLHttpRequest - il ne veux pas afficher [ par jnbdzjnbdz ] Bonjour je viens de commencer avec ajax. Et je suis déjà entrain de développer une petite application web. Si vous aller ici:<a target="_blank" hr AJAX récupération retour traitement php [ par jvergoby ] Bonjour,pour gérer un traitement assez lourd intégrant du php/oracle/traitement de fichiers plat/gérération d'un fichier excel en sortie, j'ai quelque prb avec Ajax (ou incomprension du fonctionnement des FONCTIONS) [ par gomoz ] Je m'essaye aux thechniques Ajax pour me faciliter un peu la vie sur un petit programme php que je veux ameliorer.Il y a juste une chose que j'arrive Ajax et http [ par rhum07 ] Bonjour.Petite probl&#232;me : j'ai r&#233;alis&#233; un lecteur rss qui est compos&#233; d'une page php qui va chercher une page au format XML (elle scrollbar en bas [ par Nitruk ] Bonjour,   Je monte un tchat en php, mais ma question concerne les css : La conversation s'affiche dans un div par XmlHttpRequest et je ne sais pas


Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,38 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.