Accueil > > > PAF (PHP / AJAX FRAMEWORK)
PAF (PHP / AJAX FRAMEWORK)
Information sur la source
Description
Depuis déjà quelque semaine si ce n'est pas quelques mois, je travaille sur un framework pour AJAX avec PHP, afin de faciliter le développement de site utilisant ces technologies. Le résultat est très intéressant puisque le framework gère énormément d'élément qui peuvent être problématique à gérer côté client comme le parsage de code XML, la gestion du fait que ce qui est reçu peut être du JSON, du XML ou du texte simple, la gestion des requêtes qui peuvent être automatiquement arrêté après le temps que l'on veut et la gestion des requêtes qui sont mis dans une file d'attente pour éviter de surcharger le serveur. Il y a aussi tout les options qui sont offert dans tout les scripts de se genre comme le mode GET/POST, asynchrome ou non, etc. Le tout est codé orienté objet dans la mesure où Javascript le permet. Toute la documentation, ainsi que les exemples d'utilisation sont disponible dans le zip. C'est un des projets que j'ai le plus documenté jusqu'à date. Vous devriez trouver toute l'information que vous cherchez dans la documentation qui fait 8 pages de long.
Source
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
- <head>
- <title>..:: Démonstration du framework PAF ::..</title>
- <script type="text/javascript" src="../js/PAFClient.js"></script>
- <script type="text/javascript" src="../js/Resultat.js"></script>
- <script type="text/javascript" src="../js/misc.js"></script>
- <script type="text/javascript" src="../js/XMLParser.js"></script>
- <script type="text/javascript">
- var objConnexion = new PAFClient();
-
- // URL vers lequel on fait les requêtes //
- objConnexion.setURL('demo_serveur.php');
-
- // Définit si on veut qu'il réessai la requête si elle échoue //
- objConnexion.setRetryOnFail(false);
-
- // Définit le temps avant lequel une requête soit automatique coupée //
- objConnexion.setTimeoutTime(3000);
-
- // Définit si la requête est asynchrome ou non //
- objConnexion.setAsynchronus(true);
-
- // Définit le mode de tranmission //
- objConnexion.setMethod("GET");
-
- // Test d'une commande normale //
- function test1 () {
- objConnexion.executerCommande('faire',new Array(), function (resultat) {
- alert(resultat.getText());
- });
- }
-
- // Test des plusieurs commandes simultanés //
- function test2() {
- objConnexion.executerCommande('delai',new Array(), function (resultat) {
- alert(resultat.getText());
- });
- objConnexion.executerCommande('delai',new Array(), function (resultat) {
- alert(resultat.getText());
- });
- }
-
- // Test de message entre les modules du serveur //
- function test3() {
- objConnexion.executerCommande('changement',new Array(), function (resultat) {
- alert(resultat.getText());
- });
- }
-
- // Test du parser XML //
- function test4() {
- objConnexion.executerCommande('xml', new Array(), function (resultat) {
- alert(
- "Premier élément : " + new XMLNode(resultat.getXML()).getRootNode().$('x')[0].value + "\n" +
- "Deuxième élément : " + new XMLNode(resultat.getXML()).getRootNode().$('x')[1].getRootNode().$('x')[1].value
- );
- });
- }
-
- // Test du JSON //
- function test5() {
- objConnexion.executerCommande('json', new Array(), function (resultat) {
- alert(
- "Premier élément 'x' : " + resultat.getJSON().x[0] + "\n" +
- "Deuxième élément 'x' : " + resultat.getJSON().x[1]
- );
- });
- }
- </script>
- </head>
- <body>
-
- <form>
- <b>Test 1 :</b><br />
- <p>Test le plus simple</p>
- <input type="button" value="Test 1" onclick="test1()" />
- <br />
- <br />
-
- <b>Test 2 :</b><br />
- <p>Test des requêtes qui timeout, du retryOnFail et du système de mise en queue. Il est conseillé d'avoir Firebug pour voir exactement ce qui est fait.</p>
- <input type="button" value="Test 2" onclick="test2()" />
- <br />
- <br />
-
- <b>Test 3 :</b><br />
- <p>Test côté serveur des message entres les modules.</p>
- <input type="button" value="Test 3" onclick="test3()" />
- <br />
- <br />
-
- <b>Test 4 :</b><br />
- <p>Test du parse XML et côté serveur de la génération de XML.</p>
- <input type="button" value="Test 4" onclick="test4()" />
- <br />
- <br />
-
- <b>Test 5 :</b><br />
- <p>Test du JSON côté client et serveur.</p>
- <input type="button" value="Test 5" onclick="test5()" />
- <br />
- <br />
- </form>
-
- </body>
- </html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>..:: Démonstration du framework PAF ::..</title>
<script type="text/javascript" src="../js/PAFClient.js"></script>
<script type="text/javascript" src="../js/Resultat.js"></script>
<script type="text/javascript" src="../js/misc.js"></script>
<script type="text/javascript" src="../js/XMLParser.js"></script>
<script type="text/javascript">
var objConnexion = new PAFClient();
// URL vers lequel on fait les requêtes //
objConnexion.setURL('demo_serveur.php');
// Définit si on veut qu'il réessai la requête si elle échoue //
objConnexion.setRetryOnFail(false);
// Définit le temps avant lequel une requête soit automatique coupée //
objConnexion.setTimeoutTime(3000);
// Définit si la requête est asynchrome ou non //
objConnexion.setAsynchronus(true);
// Définit le mode de tranmission //
objConnexion.setMethod("GET");
// Test d'une commande normale //
function test1 () {
objConnexion.executerCommande('faire',new Array(), function (resultat) {
alert(resultat.getText());
});
}
// Test des plusieurs commandes simultanés //
function test2() {
objConnexion.executerCommande('delai',new Array(), function (resultat) {
alert(resultat.getText());
});
objConnexion.executerCommande('delai',new Array(), function (resultat) {
alert(resultat.getText());
});
}
// Test de message entre les modules du serveur //
function test3() {
objConnexion.executerCommande('changement',new Array(), function (resultat) {
alert(resultat.getText());
});
}
// Test du parser XML //
function test4() {
objConnexion.executerCommande('xml', new Array(), function (resultat) {
alert(
"Premier élément : " + new XMLNode(resultat.getXML()).getRootNode().$('x')[0].value + "\n" +
"Deuxième élément : " + new XMLNode(resultat.getXML()).getRootNode().$('x')[1].getRootNode().$('x')[1].value
);
});
}
// Test du JSON //
function test5() {
objConnexion.executerCommande('json', new Array(), function (resultat) {
alert(
"Premier élément 'x' : " + resultat.getJSON().x[0] + "\n" +
"Deuxième élément 'x' : " + resultat.getJSON().x[1]
);
});
}
</script>
</head>
<body>
<form>
<b>Test 1 :</b><br />
<p>Test le plus simple</p>
<input type="button" value="Test 1" onclick="test1()" />
<br />
<br />
<b>Test 2 :</b><br />
<p>Test des requêtes qui timeout, du retryOnFail et du système de mise en queue. Il est conseillé d'avoir Firebug pour voir exactement ce qui est fait.</p>
<input type="button" value="Test 2" onclick="test2()" />
<br />
<br />
<b>Test 3 :</b><br />
<p>Test côté serveur des message entres les modules.</p>
<input type="button" value="Test 3" onclick="test3()" />
<br />
<br />
<b>Test 4 :</b><br />
<p>Test du parse XML et côté serveur de la génération de XML.</p>
<input type="button" value="Test 4" onclick="test4()" />
<br />
<br />
<b>Test 5 :</b><br />
<p>Test du JSON côté client et serveur.</p>
<input type="button" value="Test 5" onclick="test5()" />
<br />
<br />
</form>
</body>
</html>
Conclusion
Ceci est présentement la version RC1 (Release Candidate 1). Le modèle du core est définitif, mais je suis ouvert à toutes modifications à faire pour rendre le framework meilleur.
Compatibilité : IE5.5+ Firefox 3 (version 2 non testé) Google Chrome Safari Opéra
Le projet est aussi disponible sur PHPCS: http://www.phpcs.com/codes/PAF-PHP-AJAX-FRAMEWORK_ 49492.aspx
À venir, si j'ai le temps je vais faire quelques exemples plus complexe de l'utilisation du framework.
Fichier Zip
Historique
- 15 mars 2009 03:50:02 :
- - Deuxième démo ajouté (exemple de login utilisant AJAX)
- Bogue Fix pour l'escapage côté client des caractères envoyés.
- Ajout côté client d'un script pour faciliter le chargement de données à partir d'un formulaire. (Voir la documentation pour les détails)
- 15 mars 2009 20:45:42 :
- Ajout de la modification du DOM à partir de PHP (Voir la documentation pour les détails).
- 17 mars 2009 02:05:56 :
- Validation de formulaires ajouté avec le module FormControl.class.php (Voir la documentation pour les détails)
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
lien javascript [ par ilimo ]
bonjour....peut-on rendre un lien actif et inactif avec javascript ?ex : a et b sont deux liens html...quand je clique sur a, la page liée à a s'af
select case en javascript [ par Juju ]
je cherche une sorte un select case mais en javascript, pouvez vous me donner la syntaxe MerciJuju
javascript dans formulaire acrobat [ par domi ]
"Envoie par mèl du contenu du formulaire"j'ai écrit deux lignes simple en javascript dans un formulaire acrobat, il fonctionne bien avec Acrobat "prog
Lien javascript [ par yoyo ]
Salut tout le monde,g un petit pb,g un lien qui est une image et quand je clique dessus, je lance une fonction javascript.Sur IE, pas de probleme mais
Colle pour les pros du javascript [ par Manu ]
Bonjour,je propose aux passionnés de javascript de relever un défi. J'ai téléchargé les fichiers pour un menu en DHTML/JavaScript (fichiers .css et
Javascript & unload ?????????? [ par Léa ]
Hello Utilisant javascript, la fonction onUnload me permet correctement de capturer l'evenement de fermeture de ma fenetre... sauf que la touche F5 ou
fonction javascript [ par phil ]
Bonjourvoici mon pb: function changeFrame(frame1,frame2){ top.nomdeframe1.location=frame1 top.nomdeframe2.location=frame2 comment doit-on écrire ce sc
Besoin urgent d'une fonction Javascript [ par David ]
Bonjour,Voici le context:J'utilise des JSP dans lesquelles j'insert des tags avec des listes déroulantes en import Java.J'ai un champ text dans lequel
versions javascript [ par arthur ]
je cherche une récapitulatif contenant les fonctionnalités de chaque version de javascript de 1.0 à 1.3 ou 1.4.merci
|
Derniers Blogs
L'INTERFACE NATURELLE DE WINDOWS PHONE 7 SERIESL'INTERFACE NATURELLE DE WINDOWS PHONE 7 SERIES par odewit
La tendance est aux interfaces naturelles (NUI), et le keynote de Bill Buxton au MIX l'a bien souligné.
La charte graphique et ergonomique de Windows Phone 7 a donc été entièrement repensée en vue d'obtenir un maximum d'efficacité sur ce point. En re...
Cliquez pour lire la suite de l'article par odewit COMMENT MAPPER UNE VUE SQL SUR UNE COLLECTION DE COMPLEX TYPE?COMMENT MAPPER UNE VUE SQL SUR UNE COLLECTION DE COMPLEX TYPE? par Matthieu MEZIL
Avec EF, les vues doivent être mappées sur des entity types. Le problème c'est que les entity types doivent avoir une clé. Avec EF, nous avons les complex type qui n'ont pas de clé mais les vues ne peuvent pas être mappées dessus. Avec EF4, il est possibl...
Cliquez pour lire la suite de l'article par Matthieu MEZIL [WF4] UN BINDING ACTIVITY/ACTIVITYDESIGNER QUI PASSE MAL?[WF4] UN BINDING ACTIVITY/ACTIVITYDESIGNER QUI PASSE MAL? par JeremyJeanson
Certain d'entre vous on peut être vécu cette situation embarrassante après quelques temps passer avec WF4 : Au début avec mon " ActivityDesigner" , tout allait bien. Et puis un jour j'ai au des problèmes de " Binding" . Alors nous sommes allé sur le site ...
Cliquez pour lire la suite de l'article par JeremyJeanson
Logiciels
Academy System (10.9.4.0)ACADEMY SYSTEM (10.9.4.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods
|