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

nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 - 4 juin 2008 à 20:08
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 - 30 juil. 2008 à 16:34
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/46877-gag-gestion-ajax-generalisee

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
30 juil. 2008 à 16:34
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.

@+
rhan_659 Messages postés 85 Date d'inscription lundi 1 novembre 2004 Statut Membre Dernière intervention 30 juin 2011
30 juil. 2008 à 16:11
Bonjour

merci pour le code, simple, pratique et facile d'acces quand on ne maitrise pas le JS a font !
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
23 juin 2008 à 15:06
à 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 )
@+
XtremDuke Messages postés 626 Date d'inscription samedi 28 septembre 2002 Statut Membre Dernière intervention 18 mai 2009 4
23 juin 2008 à 14:42
Je suis complètement Out (ce doit être la digestion) mais où parle-t-on de base de données ?
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
23 juin 2008 à 14: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.
@+
XtremDuke Messages postés 626 Date d'inscription samedi 28 septembre 2002 Statut Membre Dernière intervention 18 mai 2009 4
23 juin 2008 à 14:05
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 ?
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
21 juin 2008 à 16:28
@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.
@+
XtremDuke Messages postés 626 Date d'inscription samedi 28 septembre 2002 Statut Membre Dernière intervention 18 mai 2009 4
13 juin 2008 à 17:13
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
12 juin 2008 à 13:23
>>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
XtremDuke Messages postés 626 Date d'inscription samedi 28 septembre 2002 Statut Membre Dernière intervention 18 mai 2009 4
12 juin 2008 à 09:50
+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...
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
12 juin 2008 à 09:47
>>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.
ralecul Messages postés 111 Date d'inscription dimanche 23 mars 2003 Statut Membre Dernière intervention 1 août 2008
12 juin 2008 à 00:33
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...
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
11 juin 2008 à 15:35
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.
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
10 juin 2008 à 06:28
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 !
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
10 juin 2008 à 06:13
>>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".
ralecul Messages postés 111 Date d'inscription dimanche 23 mars 2003 Statut Membre Dernière intervention 1 août 2008
9 juin 2008 à 21:01
>>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>
Hello World

<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...
XtremDuke Messages postés 626 Date d'inscription samedi 28 septembre 2002 Statut Membre Dernière intervention 18 mai 2009 4
9 juin 2008 à 17:15
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 ?
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
9 juin 2008 à 17:08
à 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.

@+
XtremDuke Messages postés 626 Date d'inscription samedi 28 septembre 2002 Statut Membre Dernière intervention 18 mai 2009 4
9 juin 2008 à 16:32
"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 ?
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
9 juin 2008 à 07:22
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.
ralecul Messages postés 111 Date d'inscription dimanche 23 mars 2003 Statut Membre Dernière intervention 1 août 2008
8 juin 2008 à 23:22
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.

@+
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
5 juin 2008 à 16:54
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 ) ?

@+
Steph666 Messages postés 74 Date d'inscription jeudi 6 mars 2003 Statut Membre Dernière intervention 5 juin 2008
5 juin 2008 à 16:32
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
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
5 juin 2008 à 12:02
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)
snakehill Messages postés 39 Date d'inscription samedi 18 janvier 2003 Statut Membre Dernière intervention 20 novembre 2008
4 juin 2008 à 21:56
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
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
4 juin 2008 à 20:08
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++
Rejoignez-nous