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: , ,

6 Responses to “jQuery et ajax”

  1. marc-o Says:

    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

  2. greut Says:

    marc-o > j’allais le dire :-D

    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

  3. greut Says:

    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.

  4. robi Says:

    @marc-o Yeah merci marc-o :P je n’avais pas fait attention a cette fonction :P

    @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?

  5. rortelli Says:

    Alors greut, trouvĂ© quelque chose par rapport Ă l’exĂ©cution de deux appels ajax simultanĂ©s?

  6. samti Says:

    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.

Leave a Reply