jQuery et ajax
Jusque lĂ j’ai principalement utilisĂ© jQuery uniquement pour me rendre la tâche plus facile lors de la manipulation dynamique des diffĂ©rents Ă©lĂ©ments constituant une page XHTML donnĂ©e.
Ce soir j’ai trouvĂ© enfin un peu de temps pour aller un peu plus loin pour enfin explorer le moyen de faire du Ajax en passant par ma librairie JavaScript fĂ©tiche :P. La tâche a Ă©tĂ© très simple grâce Ă la documentation en ligne qui n’est comprĂ©hensible pas totalement comprĂ©hensible pour les personnes dĂ©butant avec la librairie, enfin…
Le but de l’exercice est le suivant:
- Créer un formulaire avec quelques champs texte
- Envoyer le formulaire, pendant le traitement afficher une image/loader
- Déterminer comment passer les variables au fichier PHP pour leur traitement, ce dernier effectuant un traitement bidon qui va prendre quelque secondes lors de son exécution
- Afficher un feedback au terme de l’exĂ©cution du script PHP
Comme d’habitude, regardez l’exemple. Si vous regardez le code source, vous oberverez que nous n’allons pas mĂ©langer le XHTML avec le JavaScript et que le formulaire pourra ĂŞtre traitĂ© mĂŞme si le navigateur n’a pas activĂ© le JavaScript.
Brève explication du script:
- Tous d’abord on va indiquer au système d’afficher une image animĂ©e lorsqu’un appel en ajax est en cours, le cacher une fois l’appel terminĂ©;
- Ensuite, on dĂ©marre le traitement asynchrone du formulaire lorsqu’on appuye sur le bouton de submit;
- On rĂ©cupère les valeures des deux formulaires qu’on ira par la suite envoyer au fichier php pour leur traitement
- On définit si faire un _POST ou un _GET ainsi que le fichier de traitement
- Pour finir, le feedback positif
$(document).ready(function(){
$("#ajax-loader").ajaxStart(function(){
$(this).show();
});
$("#ajax-loader").ajaxStop(function(){
$(this).hide();
});
$("form").submit(function(){
prenom = $("input[@name=prenom]").val();
nom = $("input[@name=nom]").val();
$.ajax({
type: "POST",
url: "jquery.php",
data: "prenom="+prenom+"&nom="+nom,
success: function(){
$("#feedback").html("Formulaire enregistré avec succès");
}
});
return false;
});
});
Le tour est joué en quelques lignes de code, sans prise de tête. Dans le prochain article, nous montrerons comment récupérer des informations du fichier de traitement pour les afficher sur le site.
Tags: ajax, jquery, tutorial
September 16th, 2006 at 7:49 am
Ciao Roby,
Tu peux aussi utiliser la fonction serialize() de Jquery pour transformer les valeurs de ton formulaire en chaîne POST
a++
Marc-O
September 16th, 2006 at 12:24 pm
marc-o > j’allais le dire
Un truc qui m’Ă©tonne c’est que les fonctions liĂ©es Ă Ajax ne s’attachent pas Ă la requĂŞte elle-mĂŞme. Et si j’ai 2 requĂŞtes en parrallèle ? Je vais aller un peu fouiner dans la doc de jQuery.
Merci pour cet article.
PS: je rabâche, désolé : http://www.google.com/search?q=s%2Flibrairie%2Fbiblioth%C3%A8que%2Fg
September 16th, 2006 at 12:37 pm
En passant, pour rendre la documentation de visual jQuery un peu plus utilisable, ouvrir firebug et taper dans la console :
$(’#header’).hide()
$(’ul’).top(’1em’)
$(’.text’).width(’40em’)
et vive firebug. Ça doit ĂŞtre faisable via GreaseMonkey Ă©galement en ajoutant par exemple un bouton permettant d’escamotter la partie supĂ©rieure de la page.
Une doc qui ne soit pas cool Ă lire ce n’est pas agrĂ©able.
September 16th, 2006 at 1:58 pm
@marc-o Yeah merci marc-o
je n’avais pas fait attention a cette fonction
@greut merci pour le tuyau afin de rendre la doc de l’api de jquery plus lisible et surtout imprimable ;), enfin je l’espere. T’es encore a Lausanne la semaine prochaine?
September 18th, 2006 at 7:58 am
Alors greut, trouvĂ© quelque chose par rapport Ă l’exĂ©cution de deux appels ajax simultanĂ©s?
May 10th, 2007 at 11:28 pm
Bonjour,
Je suis vraiment nouveau dans l’usage d’Ajax et de jquery. Alors il y a des choses que je ne comprend pas bien.
Que dois renvoyer le script php pour que le message “succès de la mise Ă jour” s’affiche ?
Peut-ĂŞtre serait-il possible de mettre le code source de ce script dans la page d’exemple ?? Ou un code approchant ?
Merci en tous cas pour ces éclaircissements.