Aller au contenu

[AJAX] Introduction (+JQuery)


mars073
 Share

Recommended Posts

Salut all,

Je me suis enfin motivé à faire une intro sur l'ajax et son utilisation simplifié avec JQuery.

 

Comme le veut la tradition du manque d'humour avec l'ajax:

 

 

 

2005.png

Donc pour ceux qui ne savent pas ce qu'est l'ajax, en gros c'est à la place de faire recharger votre site pour quelques données vous faites une requêtes en arrière plan, c'est utile dans les shoutboxs ou pour faire certain effet sur les sites (par exemple).

 

L'ajax c'est du javascript rien à foutre de ce que vous dites et NON son utilisation par JQuery ne fait pas de vous un "dev" en ajax...

 

Comme je l'ai dis au dessus c'est l’exécution d'une requête en arrière-plan donc il faut l'initialiser > configurer la requête > l'envoyer (> récupérer réponse)

 

Initialisation:

 

var request;
if (window.XMLHttpRequest) {
request = new XMLHttpRequest();
} else if (window.ActiveXObject) { // Un petit test pour IE car ils savent pas faire comme les autres...
request = new ActiveXObject("Microsoft.XMLHTTP");
} else {
alert("Votre système d'exploitation internet ne semble pas supporter l'ajax..");
}

Envoyer une simple requête (comme si vous alliez sur la page):

 

request.open("GET", "fichier.php", true);

request.send(null);

donc vous avez dans ce cas 2 fonctions .open() et .send():

-open(): vous "ouvrez" une requête enfin de lui expliquer comment elle doit s’exécuter en 3 paramètres:

-- "GET" : type d'envoie de la requête

-- "fichier.php" : le fichier/page sur le quel il va être exécute

-- true : mode asynchrone

 

-send(): envoie de la requête dans ce cas présent il y a null car il n'y a aucun envoie de donnée

 

 

maintenant un envoie un peut plus complexe, on va faire un système d'inscription à un newsletter par requête post ._.

code html (compliqué *tousse*):

 

<input id="mail" type="email">
<input id="send" type="button" onClick="inscription();">

El js (ajax):

 

function inscription() {
var mail = document.getElementById("mail").value;
request.open("POST", "fichier.php", true);
request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
request.send("?mail=" + mail);
request.onreadystatechange = function() {
if (request.readyState == 4 && request.status == 200) {
alert(request.responseText);
}
}
}

Dans cet exemple j'ai fais une fonction du nom d'inscription, le fichier "fichier.php" dit si l'inscription a été validé ou non,

-open(): cette fois-ci ce n'est pas une requête GET mais POST donc je récupére les données en php avec $_POST[];

-setRequestHeader(): fonction optionnel pour préciser des paramètres dans l'entête de la requête

-send(): je mets en forme la variable que j'ai récupéré du nom de mail, les variables doivent être mit selon la norme RFC-1738 exemple : ?variable=123&var2=Bonjour&page=recherche&patati=p atata

-onreadystatechange : c'est l'eventement qui est généré lors de l'envoie des différents étapes de l'envoie

-readyState et status : je test le stade de la requête pour voir si elle est valide::

--readyState:

--- 0 : requête non initialisé

--- 1 : connexion au serveur établie

--- 2 : requête envoyée

--- 3 : traitement de la requête

--- 4 : réponse reçu

--status:

--- 200: "Ok"... je sais pas comment expliquer xD

--- 404: page non trouvée

-responseText : retourne la reponse de la requête sous forme de texte brut

 

et la version simplifiée (en JQuery):

vous avez 3 possibilité qui reviennent presque au même : $.ajax, $.get et $.post, j'ai expliqué la différence au dessus (le $.ajax et similaire au $.get).

 

La syntaxe pour un simple envoie avec $.ajax:

 

$.ajax({url:"fichier.php"});

La syntaxe pour un simple envoie avec $.get et un petit message à la fin de l'envoie:

 

$.get("fichier.php", function() {
alert("requête envoyée");
});

La syntaxe pour envoie avec variables avec $.post et recupération des données (fonctionnel avec $.get sans les variables entre {}):

 

$.post("fichier.php", {
page : "mmotrick",
methode : "ajax",
version : 3
}, function(data, statut){
alert("Réponse requête: " + statut + "# " + data);
});

...

Modifié par mars073
correction
  • Upvote 3
Lien vers le commentaire
Partager sur d’autres sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Invité
Répondre à ce sujet…

×   Vous avez collé du contenu avec mise en forme.   Supprimer la mise en forme

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Chargement
 Share

×
×
  • Créer...