Apprendre jQuery

La méthode .post()

API : http://api.jquery.com/jQuery.post/

La méthode .post() permet d'envoyer des données. Par exemple, vous pouvez l'utiliser pour envoyer des données saisies dans un formulaire.

La méthode consiste à envoyer des données vers un fichier Php qui se chargera de les transmettre au serveur. Cette méthode peut également retourner des informations en callback dans la page.

$.post('send.php',
    {
        name: 'Jean-Michel',
        email: 'jeanmich@caramail.com'
    }, function(data) {
        alert(data);
});

La méthode en détail

$.get( url, data, function(data,status,xhr), dataType );
Paramètre Description
url Requis
Une chaîne contenant l'URL vers laquelle la demande est envoyée
data Optionnel
Spécifie les données à envoyer vers le serveur en même temps que la demande
function(data,status,xhr) Optionnel
Indique une fonction à exécuter lorsque la méthode est terminée
Paramètres supplémentaires :
- data - contient les données résultant de la demande
- status - contient l'état de la demande ("success", "notmodified", "error", "timeout", ou "parsererror")
- xhr - contient l'objet XMLHttpRequest
dataType Optionnel
Spécifie le type de données attendu. Par défaut jQuery effectue une estimation automatique (xml, json, script, ou html)

Exemple d'envoi de données

Dans l'exemple suivant, nous envoyons une requête permettant de faire une recherche puis nous affichons le résultat de la recherche.

Cet exemple ne contient pas le fichier PHP de traitement (ce n'est pas le sujet de ce cours).

La structure html

<form action="/" id="searchForm">
    <input type="text" name="s" placeholder="Rechercher…">
    <input type="submit" value="Ok">
</form>
<div id="result"></div>

Le script jQuery de traitement

$('#searchForm').submit(function(event) {

  // Stop la propagation par défaut
  event.preventDefault();

  // Récupération des valeurs
  var $form = $(this),
       term = $form.find( "input[name='s']" ).val(),
       url = $form.attr( "action" );

  // Envoie des données
  var posting = $.post( url, { s: term } );

  // Reception des données et affichage
  posting.done(function(data) {
    var content = $(data).find('#content');
    $('#result').empty().append(content);
  });

});