Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse

NodeBB

  1. Home
  2. Programmation
  3. Développement web
  4. Javascript
  5. [AJAX] Introduction (+JQuery)

[AJAX] Introduction (+JQuery)

Scheduled Pinned Locked Moved Javascript
4 Posts 3 Posters 2.7k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • mars073M
    mars073M
    mars073
    wrote on last edited by
    #1

    <p>
    Salut all,
    </p>
    <p>
    Je me suis enfin motivé à faire une intro sur l'ajax et son utilisation simplifié avec JQuery.
    </p>
    <p>
     
    </p>
    <p>
    Comme le veut la tradition du manque d'humour avec l'ajax:
    </p>
    <p></p><p style="text-align:center;">
     
    </p>
    <p>
    <img alt="2005.png" src="<base_url>/applications/sslimageproxy/interface/image.php?url=http://www.colgate.fr/PDP/Ajax/FR/About/Story/images/2005.png"/></p>
    <p>
    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).
    </p>
    <p>
     
    </p>
    <p>
    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...
    </p>
    <p>
     
    </p>
    <p>
    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)
    </p>
    <p>
     
    </p>
    <p>
    Initialisation:
    </p>
    <p>
     
    </p>
    <pre class="ipsCode prettyprint lang-auto prettyprinted">
    <span class="kwd">var</span><span class="pln"> request</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">window</span><span class="pun">.</span><span>XMLHttpRequest</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    request </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span>XMLHttpRequest</span><span class="pun">();</span><span class="pln">
    </span><span class="pun">}</span><span class="pln"> </span><span class="kwd">else</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">window</span><span class="pun">.</span><span>ActiveXObject</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> </span><span class="com">// Un petit test pour IE car ils savent pas faire comme les autres...</span><span class="pln">
    request </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span>ActiveXObject</span><span class="pun">(</span><span class="str">"Microsoft.XMLHTTP"</span><span class="pun">);</span><span class="pln">
    </span><span class="pun">}</span><span class="pln"> </span><span class="kwd">else</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    alert</span><span class="pun">(</span><span class="str">"Votre système d'exploitation internet ne semble pas supporter l'ajax.."</span><span class="pun">);</span><span class="pln">
    </span><span class="pun">}</span></pre>
    <p>
    Envoyer une simple requête (comme si vous alliez sur la page):
    </p>
    <p>
     
    </p>
    <pre class="ipsCode prettyprint lang-auto prettyprinted">
    <span class="pln">request</span><span class="pun">.</span><span class="pln">open</span><span class="pun">(</span><span class="str">"GET"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"fichier.php"</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">);</span><span class="pln">

    request</span><span class="pun">.</span><span class="pln">send</span><span class="pun">(</span><span class="kwd">null</span><span class="pun">);</span></pre>
    <p>
    donc vous avez dans ce cas 2 fonctions .open() et .send():
    </p>
    <p>
    -open(): vous "ouvrez" une requête enfin de lui expliquer comment elle doit s’exécuter en 3 paramètres:
    </p>
    <p>
    -- "GET" : type d'envoie de la requête
    </p>
    <p>
    -- "fichier.php" : le fichier/page sur le quel il va être exécute
    </p>
    <p>
    -- true : mode asynchrone
    </p>
    <p>
     
    </p>
    <p>
    -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
    </p>
    <p></p><p>
    maintenant un envoie un peut plus complexe, on va faire un système d'inscription à un newsletter par requête post ._.
    </p>
    <p>
    code html (compliqué tousse😞
    </p>
    <p>
     
    </p>
    <pre class="ipsCode prettyprint lang-auto prettyprinted">
    <span class="tag"><input</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"mail"</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"email"</span><span class="tag">></span><span class="pln">
    </span><span class="tag"><input</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"send"</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"button"</span><span class="pln"> </span><span class="atn">onClick</span><span class="pun">=</span><span class="atv">"</span><span class="pln">inscription</span><span class="pun">();</span><span class="atv">"</span><span class="tag">></span></pre>
    <p>
    El js (ajax):
    </p>
    <p>
     
    </p>
    <pre class="ipsCode prettyprint lang-html prettyprinted">
    <span class="pln">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);
    }
    }
    }</span></pre>
    <p>
    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,
    </p>
    <p>
    -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[];
    </p>
    <p>
    -setRequestHeader(): fonction optionnel pour préciser des paramètres dans l'entête de la requête
    </p>
    <p>
    -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
    </p>
    <p>
    -onreadystatechange : c'est l'eventement qui est généré lors de l'envoie des différents étapes de l'envoie
    </p>
    <p>
    -readyState et status : je test le stade de la requête pour voir si elle est valide::
    </p>
    <p>
    --readyState:
    </p>
    <p>
    --- 0 : requête non initialisé
    </p>
    <p>
    --- 1 : connexion au serveur établie
    </p>
    <p>
    --- 2 : requête envoyée
    </p>
    <p>
    --- 3 : traitement de la requête
    </p>
    <p>
    --- 4 : réponse reçu
    </p>
    <p>
    --status:
    </p>
    <p>
    --- 200: "Ok"... je sais pas comment expliquer xD </p>
    <p>
    --- 404: page non trouvée
    </p>
    <p>
    -responseText : retourne la reponse de la requête sous forme de texte brut
    </p>
    <p>
     
    </p>
    <p>
    et la version simplifiée (en JQuery):
    </p>
    <p>
    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).
    </p>
    <p>
     
    </p>
    <p>
    La syntaxe pour un simple envoie avec $.ajax:
    </p>
    <p>
     
    </p>
    <pre class="ipsCode prettyprint lang-auto prettyprinted">
    <span class="pln">$</span><span class="pun">.</span><span class="pln">ajax</span><span class="pun">({</span><span class="pln">url</span><span class="pun">:</span><span class="str">"fichier.php"</span><span class="pun">});</span></pre>
    <p>
    La syntaxe pour un simple envoie avec $.get et un petit message à la fin de l'envoie:
    </p>
    <p>
     
    </p>
    <pre class="ipsCode prettyprint lang-auto prettyprinted">
    <span class="pln">$</span><span class="pun">.</span><span class="kwd">get</span><span class="pun">(</span><span class="str">"fichier.php"</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">function</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    alert</span><span class="pun">(</span><span class="str">"requête envoyée"</span><span class="pun">);</span><span class="pln">
    </span><span class="pun">});</span></pre>
    <p>
    La syntaxe pour envoie avec variables avec $.post et recupération des données (fonctionnel avec $.get sans les variables entre {}):
    </p>
    <p>
     
    </p>
    <pre class="ipsCode prettyprint lang-auto prettyprinted">
    <span class="pln">$</span><span class="pun">.</span><span class="pln">post</span><span class="pun">(</span><span class="str">"fichier.php"</span><span class="pun">,</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    page </span><span class="pun">:</span><span class="pln"> </span><span class="str">"mmotrick"</span><span class="pun">,</span><span class="pln">
    methode </span><span class="pun">:</span><span class="pln"> </span><span class="str">"ajax"</span><span class="pun">,</span><span class="pln">
    version </span><span class="pun">:</span><span class="pln"> </span><span class="lit">3</span><span class="pln">
    </span><span class="pun">},</span><span class="pln"> </span><span class="kwd">function</span><span class="pun">(</span><span class="pln">data</span><span class="pun">,</span><span class="pln"> statut</span><span class="pun">){</span><span class="pln">
    alert</span><span class="pun">(</span><span class="str">"Réponse requête: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> statut </span><span class="pun">+</span><span class="pln"> </span><span class="str">"# "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> data</span><span class="pun">);</span><span class="pln">
    </span><span class="pun">});</span></pre>
    <p>
    ...
    </p>

    Aide à l'apprentissage et la réalisation pour des graphismes, des programmes, des sites ou autres.Signature aléatoire, proposez vous aussi une signature ici!

    1 Reply Last reply
    3
    • S
      S
      Soon
      wrote on last edited by
      #2

      <p>Ajax professional :lol: </p><p></p><p>
      Le tutoriel est fini ?</p>

      1 Reply Last reply
      0
      • mars073M
        mars073M
        mars073
        wrote on last edited by
        #3

        <blockquote class="ipsQuote" data-cite="Soon" data-ipsquote="" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentcommentid="2050" data-ipsquote-contentid="190" data-ipsquote-contenttype="forums" data-ipsquote-timestamp="1395004624" data-ipsquote-username="Soon"><div><p>Le tutoriel est fini ?</p></div></blockquote><p>je voulais ajouter encore un truc à la fin mais je sais plu quoi x'D</p>

        Aide à l'apprentissage et la réalisation pour des graphismes, des programmes, des sites ou autres.Signature aléatoire, proposez vous aussi une signature ici!

        1 Reply Last reply
        0
        • AzadA
          AzadA
          Azad
          wrote on last edited by
          #4

          <p>Très bon guide, merci de l'avoir fait pour Melinyel. 🙂 <br/><br/>
          +1 Rep.</p>

          Administrateur du forum.
          Contactez-moi par message privé ou par mail.

          1 Reply Last reply
          0

          Hello! It looks like you're interested in this conversation, but you don't have an account yet.

          Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

          With your input, this post could be even better 💗

          Register Login
          Reply
          • Reply as topic
          Log in to reply
          • Oldest to Newest
          • Newest to Oldest
          • Most Votes


          • Login

          • Login or register to search.
          Powered by NodeBB Contributors
          • First post
            Last post
          0
          • Categories
          • Recent
          • Tags
          • Popular
          • World
          • Users
          • Groups