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 !

AJAX : LIBRAIRIE SIMPLIFIÉE PERMETTANT EN 1 LIGNE DE FAIRE DES REQUETES


Information sur la source

Catégorie :Divers Classé sous : ajax, requete, dynamique, xml Niveau : Débutant Date de création : 25/09/2006 Date de mise à jour : 09/06/2007 01:22:48 Vu / téléchargé: 14 249 / 2 154

Note :
7,83 / 10 - par 6 personnes
7,83 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

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

Description

Ma librairie Ajax permet en 1 ligne de code d'envoyer des requetes avec les options que l'on veut!!!
Et tout ca très simplement sans prise de tete pour comprendre comment utiliser ma classe Ajax.

De nombreuses librairies pour simplifier l'utilisation d'Ajax existent déjà sur le net mais on se retrouve a chaque fois avec des surprises lorsque l'on tente de les utiliser... ( aucunes explications lors des erreurs, manque de commentaires... etc )

C'est pourquoi je vous propose cette classe Ajax vraiment très simple et complète
Le code est abondamment commentée afin de tout comprendre, puis vous trouverez dans le zip un exemple rapide.

PHP est obligatoire!!!!!
 

Conclusion

Merci de laisser vos commentaires si jamais vous avez un problème d'utilisation afin de me permettre de rectifier les eventuels problèmes résiduels
Merci encore pour vos commentaires et vos avis
 

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

03 octobre 2006 01:05:01 :
Correction du bug de l'envoi de requete avec parametres en GET Correction du bug de lancement de requetes AJAX en meme temps
09 juin 2007 00:54:53 :
Correction des commentaires dans le fichier javascript qui indiquait des paramètres non utilisés. (rien de méchant)
09 juin 2007 01:22:48 :
Nouvelle indentation du code (je sais pas pourquoi il y avait cette ancienne indentation d'ailleurs...); Ajout de l'objet Ajax en paramètre aux fonctions onSuccess et onError => onSuccess: function(xhr) { ... } les réponses sont donc atteignables par xhr.responseText et xhr.responseXML;

Commentaires et avis

signaler à un administrateur
Commentaire de stailer le 26/09/2006 23:47:14

Ton système est pas mal, mais basique.
Objectivement il existe de très bonnes classes php pour Ajax: Najax (sur phpclasses.org) , Sajax ou encore Xajax. Le gros avantages est que tu peux appeller les méthode d'une classe php avec le même nom depuis le javascript.
Et elles marchent très bien. Notamment Najax que j'ai utilisé en profondeur et avec lequel j'ai eu aucun souci particulier. Dans ton cas on doit utiliser des fichiers externes...
Bref, c'est quand même pas mal, et tu simplifies également pas mal les choses. Alors 7/10

signaler à un administrateur
Commentaire de rubiks10 le 27/09/2006 23:33:40

Oui Stailer en fait le but de ma librairie etait de réduire au minimum le code car en fait on se retrouve souvent avec des centaines de lignes de codes provenant d'une librairie alors que l'on va en utiliser qu'une dizaine...

Et la plupart du temps les débutants en Ajax lachent vite l'affaire en essayant de comprendre comment utiliser les librairies " mega " completes.

Donc j'ai en fait programmé une librairie Ajax pour débutant pour qu'ils comprenent le fonctionnement grace a l'abondance des commentaires et a la petite masse de code qui ne va pas " démoraliser " les newbies...

Voila voila mais je suis entierement d'accord avec toi qu'il existe des librairies vraiment completes !!! Mais a part dans des projets gigantesques et vraiment complexes l'intégralité des methodes définies n'est jamais utilisée

Voila voila. Merci encore pour ton commentaire
--The Rubik's Man--

signaler à un administrateur
Commentaire de younes371 le 04/10/2006 13:32:48

Bonjour,
c ets un bon code, si possible je ve que lorsque l'utilisateur tape un texte ds une zone de texte, le contenue de la zone s'enregistre dans la base de données.
Merci.

signaler à un administrateur
Commentaire de rubiks10 le 04/10/2006 18:14:24

Salut Younes

en fait j'ai pas trop compris ce que tu demandes...
Tu veux que je te fasse un script qui fait quoi exactement??

- que lorsque a chaque touche appuyée dans un textarea le contenu soit enregistré dans une table d'une base de données ??

c'est bien ca??

signaler à un administrateur
Commentaire de younes371 le 04/10/2006 18:58:22

Bonjour,
Oui exactement ça,


signaler à un administrateur
Commentaire de younes371 le 04/10/2006 19:01:13

on prend l exemple qu on a plusieurs zone de tenxte (4 par exemple). si on modifie le texte d'une zone, on modifie aussi son contenue ds la BD.
juste une idée:
et meme si on ve aller plus lion, si les 4 zones sont remplies une nouvelle zone apparâtaire.
Merci Bcp

signaler à un administrateur
Commentaire de rubiks10 le 06/10/2006 21:55:30

Ok younes... par contre je vois pa pourquoi tu demandes ca ici... car mon module d'autocompletion n'a rien a voir a ce que tu veux toi.

Et puis aussi sache que le contenu des textarea est illimité.

Pour ton exemple tu vas voir dans mes sources sur ce site et tu télécharge ma librairie AJAX, ensuite tu codes un fichier en php ou autre langage serveur qui te permet de recevoir le contenu des textarea et de l'enregistrer dynamiquement sur la base.

Voila mais je te le dis encore ta question n'a rien a voir avec l'autocompletion

bonne prog

-- The Rubik's Man --

signaler à un administrateur
Commentaire de younes371 le 06/10/2006 23:28:15

Merci pour ton aide

signaler à un administrateur
Commentaire de paulfillit le 13/11/2006 13:12:25

Bonjour,

Merci pour ce code qui m’a permis de me rendre compte des possibilités d’AJAX associés au PHP. J’ai pu ainsi réaliser un script qui lance plusieurs process et renseigne un bdd.

Le seul souci qu’il me reste est de pouvoir savoir quand toutes les recherches sont finie afin d’afficher une page de résultat (lecture de ma table rensigné).

Je voulais m’inspirer de la fonction « debug » qui renvoi en fait n’importe quel texte affiché dans le script appelé…

Y aurait-il un moyen de renseigner un flux xml ou un (tableau du type $Resultat[‘mapage’]=’OK’ ); afin que je puisse faire une boucle « while » ( en prévoyant un Timout) ?

J’espère que je n’ai pas été trop flou…

Merci pour vos réponses,

signaler à un administrateur
Commentaire de olid le 22/11/2006 19:21:50

Si le système de vote de CS n'était pas planté, j'aurais mis 10.

Trés bonne source qui correspond parfaite à son titre, bien commenté, lègère, et donc parfaite quand on veut juste faire une requête en AJAX comme pour les tests de validité d'un formulaire (mail,login,password).

Par contre, l'exemple n'est pas trés convaincant, fodrait qqch de plus "spectaculaire" ;op

signaler à un administrateur
Commentaire de JLN le 30/04/2007 11:35:18

Bonjour,
     Encore une fois un très bon code qui servira ceux qui n'y connaissent rien (ou presque) en ajax. Et je suis d'accord avec toi pour dire que les librairies fastidieuse ne servent qu'en partie quelques fois à peine 10%. Alors que là on a affaire à de l'utilisable tout de suite et sans contrainte, et ceux qui comme moi maitrise un peu le php et presque pas le javascript c'est plus simple. Je met 10 pour encourager à aider les plus faible (j'en fais partie).

Bonne prog à tous...
@+ JLN

signaler à un administrateur
Commentaire de m3919 le 08/06/2007 13:59:19

bonjour,
j'essai d'utiliser ta librairie à partir de ton fichier d'exemple.
lors de l'appel de la fonction, je veux utiliser successEnd:
new Ajax_request('./testXML.php',{method:'post',successEnd: sucXML, params:'param1=true&param2=false'});
Mais avec la syntaxe ci-dessus, cela ne semble pas fonctionner, car j'ai l'affichage DEBUGSUCCESSMESSAGE qui apparait
si tu avais le temps de m'expliquer, merci

signaler à un administrateur
Commentaire de rubiks10 le 09/06/2007 00:53:32

Salut m3919

Oui c'est normal j'avais fais une erreur dans la documentation... les paramètres à utiliser sont en fait :
"onSuccess" au lieu de "successEnd", "onError" au lieu de "errorEnd" ou pour les paramètres "params" au lieu de "paramString"

J'ai mis à jour la source (le code est inchangé, seulement les commentaires sont mis a jour)
Merci bien de m'avoir indiqué cette erreur.

@+

signaler à un administrateur
Commentaire de m3919 le 11/06/2007 19:08:25

bonjour,
merci pour le temps que tu as pris pour corriger et adapter ton code et l'exemple d'utilisation qui m'a bien aidé. Et pour abuser de ton temps j'ai une autre question.
Peut-on passer des variables comme parametre c'est a dire faire qql
du style:
var chaine= "bonjour"
....
new Ajax_request('./testHTML.php',{method:'get',params:'param1=chaine&param2=false'});
merci,
A+

signaler à un administrateur
Commentaire de rubiks10 le 11/06/2007 20:44:09

re m3919

Je sais pas si toi par contre tu as pris le temps de comprendre le fonctionnement de ma source...

C'est pourtant explicite !! tu remplaces les param1=chaine etc... par les paramètres que tu veux
en reprenant ton exemple :

new Ajax_request('./testHTML.php',{method:'get',params:'chaine=bonjour'});

ou

new Ajax_request('./testHTML.php',{method:'get',params:'chaine='+chaine}); (si tu veux que le paramètre soit dynamique.

Voilà
@++

signaler à un administrateur
Commentaire de overstone le 18/07/2007 12:47:36

Bonjour,

Je bloque depuis 5 jours sur comment faire pour supprimer une fiche d'une table Mysql en passant par AJAX pour ne pas recharger la page.

Mon code fonctionne à merveille en php avec ce lien : <a href="include/supprimer.php?date=<?php echo $donnees['date']; ?>
Mais malgré ton tuto je n'arrive pas à comprendre le passage par AJAX pour faire strictement la même chose sans devoir recharger la page. ????

signaler à un administrateur
Commentaire de rubiks10 le 20/07/2007 02:28:08

Salut Overstone

Remplace ton lien : <a href="include/supprimer.php?date=<?php echo $donnees['date']; ?>

par : <a href="#" onclick="new Ajax_request('include/supprimer.php',{method:'get',params:'date=<?php echo $donnees['date']; ?>',onSuccess:function(){}});return false;"> blablabla </a>

voila quand tu cliques sur le lien (même si apparemment rien ne se passe) ta fiche est supprimée dynamiquement

@+

signaler à un administrateur
Commentaire de olid le 20/07/2007 10:13:45

rubiks10, si tu es bien l'auteur de cette source, donne une URL de ton blog ou site perso pour te faire un peu de pub sur life2front.com dont les profils LiFE-Line utilisent ta lib :o)

Ya pô un update de prévu ? ... Sinon, j'pense la ré-écrire/organiser pour pour mes besoins futurs.

NB: lesscripts de compression JS abime ta lib :o(

signaler à un administrateur
Commentaire de sambucus le 14/08/2007 07:02:51

Bonjour,

J'ai une erreur 405 méthode non autorisée :

http://blogdelaureminervois.free.fr/grandesfamilles/

Suivre l'arborescence :

Lauran Cabaret
l'ouvrage
heresie

Alors qu'en local cela fonctionne ainsi que votre exemple fonctionne en ligne ?

Si non cela semble efficace et pratique.

Merci,

Salutations

signaler à un administrateur
Commentaire de paulux1 le 17/08/2007 10:15:40

Bonjour Rubik10,

J'utilise ta classe pour effectuer plusieurs requêtes simultanées. Ca fonctionne super. En revanche, je souhaiterais récupérer la valeur contenue dans une variable de session ($_session[....]) qui évolue en fonction des différents résultats de recherche effectués. Y a-t-il un moyen pour récupérer cette valeur au lieu de récupérer le texte d'une page?

Merci,

signaler à un administrateur
Commentaire de olid le 27/09/2007 10:54:28

Attention, il y a de gros risques de confusion quand on fait plusieurs requêtes simultanées en mode asynchrone. Et aussi un souci d'affection de la classe dans des variables globales depuis des fonctions.

Pour résoudre ces problèmes, j'ai fait les modifs ci-dessous dans la fonction finalize() pour passer les resultats comme argument des fonctions associées à la requête.

if ( this.Ajax_object.status == 200 )  this.properties['successEnd'](this.Ajax_object.responseText,this.Ajax_object.responseXML);
else
this.properties['errorEnd'](this.Ajax_object.status);

signaler à un administrateur
Commentaire de olid le 27/09/2007 11:03:54

Oups désolé, j'étais pas au courant de l'update de Juin qui corrige les problèmes que je viens d'énoncer...

signaler à un administrateur
Commentaire de masternico le 28/10/2007 22:27:56 9/10

Salut rubiks10,
alors voila, ta source ma résolue 4h de devellopement. Grosso-modo, je partais dans la même direction, mais je n'ai pas réussi à faire le truc avec la fonction .bind(). En fait, j'était bloqué à cause de ce petit "bug" qui faisait qu'il métait impossible d'accéder à mon objet au sein de ma function branchée sur onreadystatechange. Du coup, je te pique ton code qui est plus aboutis.
Par contre, j'avais résolu un autre bug qui existe dans ta librairie.

Sous IE, tout marche nickel, par contre, sous FF, le modesynchrone ne fonctionne pas. Il semblerais que ce soit un bug de FF.

La solution trouvée est de rajouter un test juste apres l'instruction send().
Ca donne ça:

        processRequest: function() {
                this.Ajax_object.open(
                        this.properties['method'],
                        this.properties['method'] == 'post' ?
                                this.properties['url'] : this.properties['url']+this.properties['paramString'],
                        this.properties['async']
                );
                if ( this.properties['method'] == 'post' )
                        this.Ajax_object.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
                this.Ajax_object.send(this.properties['method'] == 'post' ? this.properties['paramString'] : null);
//////////////répétition du code de la function setReadyProcess()
                if(this.properties['async'] == false){
                        if (this.Ajax_object.readyState == 4 ) {
                                responseText = this.Ajax_object.responseText;
                                responseXML = this.Ajax_object.responseXML;
                                this.responseText = this.Ajax_object.responseText;
                                this.responseXML = this.Ajax_object.responseXML;
                                if ( this.Ajax_object.status == 200 ) this.properties['successEnd'](this.Ajax_object);
                                else this.properties['errorEnd'](this.Ajax_object);
                        }
                }

        }


et là, ça fonctionne.
En tout cas, bon boulot: 9/10

signaler à un administrateur
Commentaire de masternico le 28/10/2007 22:50:45

En fait, on peut faire plus propre:

dans 'request':
                if ( typeof(url) != 'string' ) {
                        alert('url de format invalide ( l\'url est obligatoire )');
                        return;
                }
                else this.properties['url'] = url;

                this.setReadyProcess();
                this.processRequest();
mettre:

                if ( typeof(url) != 'string' ) {
                        alert('url de format invalide ( l\'url est obligatoire )');
                        return;
                }
                else this.properties['url'] = url;

                if(this.properties['async'] == true){   //branchement seulement si asynch
                        this.setReadyProcess();
                }
                this.processRequest();

//////////////////////
//////////////////////

Dans 'processequest':

                if ( this.properties['method'] == 'post' )
                        this.Ajax_object.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
                this.Ajax_object.send(this.properties['method'] == 'post' ? this.properties['paramString'] : null);

mettre:

                if ( this.properties['method'] == 'post' )
                        this.Ajax_object.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
                this.Ajax_object.send(this.properties['method'] == 'post' ? this.properties['paramString'] : null);
                if(this.properties['async'] == false){        // correction pour le bug de FireFox
                        this.processResult();
                }

///////////////////////
//////////////////////

        setReadyProcess: function() {
                this.Ajax_object.onreadystatechange = function() {
                        this.processResult();
                }.bind(this);
        },

////////////////////////////////
////////////////////////////////
enfin, ajouter:

        /**
          *             Fonction permettant d'enregistrer les fonctions executees lors du succes ou d'une erreur
          */
        processResult: function() {
                if (this.Ajax_object.readyState == 4 ) {
                        responseText = this.Ajax_object.responseText;
                        responseXML = this.Ajax_object.responseXML;
                        this.responseText = this.Ajax_object.responseText;
                        this.responseXML = this.Ajax_object.responseXML;
                        if ( this.Ajax_object.status == 200 ) this.properties['successEnd'](this.Ajax_object);
                        else this.properties['errorEnd'](this.Ajax_object);
                }
        },


signaler à un administrateur
Commentaire de olid le 15/12/2007 16:10:38

Nouveau défi: j'ai besoin de régler un délais pour les requetes, et de recevoir un code d'erreur spécial quand le délais est dépassé.

J'etudie çà ce weekend ;o)

signaler à un administrateur
Commentaire de Disicom le 18/12/2007 18:07:13

Bon boulot en tout cas !

signaler à un administrateur
Commentaire de chang93 le 13/03/2008 12:09:51

Pas mal pour débuter avec ajax, donc 8/10

signaler à un administrateur
Commentaire de laquiche31 le 27/08/2008 09:25:47

bonjour,

Je cherche le moyen de faire passé un parametre a la fonction executée en cas de succes.
mais je bug puisque pour nommé cette fonction on ne met pas les parenteses onSucces:fonction, donc ou peut-on faire passer ces parametres.
merci

signaler à un administrateur
Commentaire de olid le 27/08/2008 12:54:06

@Laquiche: pas dur...

Le plus simple ; fais passer le parametre dans l'URL du script de ta requete. Dans celui-ci, recupere le en mode GET. Puis, insére ces parametres dans le resultat JSON (ou XML) que ton script doit renvoyer ;o)

Le mieux ; indique les parametres via "paramString" et definit la "method" en POST.

signaler à un administrateur
Commentaire de laquiche31 le 27/08/2008 13:27:45

ca marche merci

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Recuperer des valeurs d'un formulaire pour creer une requete mysql [ par Ze_lola ] Bonjour a tous! Alors voila j'ai un petit problème concernant ajax:il faut que je recupere des valeurs d'un formulaire et que je les réincjecte dans u "ajax" et probléme de rafraichissement [ par matheo54 ] Bonjour a tous ( ou bonsoir )Je vous souhaite pour commencer a tous et a toutes une bonne et heureuse année 2007.Ensuite, j'aurais un ti conseil à vou Formulaire dynamique [ par alphacrash ] Salut à tous, je vous explique mon problème :Je récupère le contenu d'une chaîne, par exemple celle-ci :$chaine="&lt;html&gt;&lt;body&gt;&lt;input typ FireFox 3 + Ajax = bug ? [ par rhan_659 ] Bonjour à tous Je suis face à un bug désopilant, un code en ajax qui fonctionne sous FF2 mais pas sous FF3 voila le code que j'utilise requete = Patienter pendant une requete Ajax [ par deterred ] Bonjour, J'ai une grosse requete Ajax a executer, et le chargement est long. Je voudrais mettre à la place de mon compteur de résultat un message du g secours svp problem javascript -> ajax [ par barcawi ] bonjour,j'execute une requette Ajax à l'aide d'u problème ajax XML [ par shin_hermit ] j'ai un fichier XML comme celui-ci:&lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;xml&gt;&lt;results&gt;&lt;row&gt;&lt;field name="id_message"&gt;1&l menu dynamique [ par rosalin83 ] salut tt le monde, je suis débutante en javascript et j'ai un projet à réaliser:création d'un éditeur de menu dynamique.vraiment je sais pas quoi fair Probleme d'affichage d'ajax [ par gazalii ] bonjourj'ai un tableau que je remplis en utilisant un traitement ajax lorsque le tableau s'affiche a la fin la page ce bloque pendant 1 a 3 secondesy Ajax [ par 0mido0 ] je cherche un code qui peut m'aider dans le développement d'un site avec la technologie Ajax.


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



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 : 3,900 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é.