IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

[AJAX] Ajax optimisation et function javascript !


Sujet :

JavaScript

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 205
    Points : 0
    Points
    0
    Par défaut [AJAX] Ajax optimisation et function javascript !
    Salut !

    Oui le titre est un peu racoleur, mais bon lol ! faut bien de temps à autres ^^ !

    Donc voilà mon souci, je suis pas trop un pro en Ajax, c'est la première fois que je l'utilise vraiment...

    A la base cela n'a pas été simple de le combiner avec mon site web et le modèle MVC ...

    J'ai donc repris mes fonctions, et ait essayé de les rendre le plus générique possible ... par contre problème :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    //Bandeau.jsp
    <a href="javascript:MakeRequestMenu('Test')"> Test </a> 
    //j'ai une servlet qui est mappée à "Test"
     
    //test.js
    function MakeRequestMenu(servlet){
    getXmlRequest(); //ici je récupère l'objet active X etc ... pas utile à détailler
     
    req.onreadystate = newResponseToDiv;
    req.open("GET", servlet, true) //ici j'utilise mon paramètre servlet pour la généricité, jusqu'ici tout fonctionne ....
    req.send(null);
    //desfois je mets un "return false;" ou pas, pas trop saisi l'utilité ....
    }
     
    function newResponseToDiv(){
    if (req.readyState ==4 && req.status == 200){
          var tmp = req.responseText;
          if (typeof(tmp)!= "undefined") {
              mdiv = document.getElementById("contenu");
              mdiv.innerHTML = tmp;
         }else alert("Erreur pendant la mise à jour de la page");
    }
    }
    Tout ce code fonctionne ... après si il y a des erreurs dans le code ou des ajustements à faire j'ai l'oreille ouverte ...

    Après j'ai voulu placer le "contenu" dans un parametre "div" histoire que je n'ai pas à réécrire une fonction javascript pour chaque zone de ma page ...
    Comme cela :

    Mais là le rafraichissement de la page ne fonctionne plus ...

    Est ce que quelqu'un a une idée ?

    Code qui ne fonctionne plus, inspiré du premier exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    //Bandeau.jsp
    <a href="javascript:MakeRequestMenu('Test','contenu')"> Test </a> 
    //j'ai une servlet qui est mappée à "Test", j'ai ajouté 'contenu' qui est une de mes Divs CSs ...
     
    //test.js
    function MakeRequestMenu(servlet, div){
    getXmlRequest(); //ici je récupère l'objet active X etc ... pas utile à détailler
     
    req.onreadystate = newResponseToDiv(div); // pour faire circuler le paramètre ...
    req.open("GET", servlet, true) //ici j'utilise mon paramètre servlet pour la généricité, jusqu'ici tout fonctionne ....
    req.send(null);
    //desfois je mets un "return false;" ou pas, pas trop saisi l'utilité ....
    }
     
    function newResponseToDiv(div){
    if (req.readyState ==4 && req.status == 200){
          var tmp = req.responseText;
          if (typeof(tmp)!= "undefined") {
              mdiv = document.getElementById(div); // la ca ne passe plus, la propagation du parametre se fait mal ou je ne sais pas !
              mdiv.innerHTML = tmp;
         }else alert("Erreur pendant la mise à jour de la page");
    }
    }
    Merci pour votre précieuse aide...

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Déjà :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    req.onreadystate = newResponseToDiv;
    je suis surpris que ça fonctionne !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    req.onreadystatechange = newResponseToDiv;
    ensuite, tu ne peux pas passer de paramètre de la façon dont tu le fais, essaye plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    req.onreadystatechange = function(){newResponseToDiv(div);}
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre expérimenté Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Points : 1 388
    Points
    1 388
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    req.send(null);
    //desfois je mets un "return false;" ou pas, pas trop saisi l'utilité ....
    Pour le coup tu devrais le mettre ^^

    Le truc, c'est que quand tu appliques une fonction javascript sur le onclick d'un lien, si tu ne retourne pas false, l'action du click sur le lien va se produire, c'est à dire que tu vas changer de page et adieu rafraichissement. En retournant false, tu bloques ce comportement et donc tu restes sur la meme page.

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 205
    Points : 0
    Points
    0
    Par défaut
    salut Bovino !

    J'ai oublié le "change" à "onreadystate" non çà s'est bien écrit, j'ai juste fait une erreur en le postant sur le forum désolé !

    Sinon, oui ce serait bizarre que ca fonctionne ^^ !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    req.onreadystatechange = newResponseToDiv;
    Oui, je sentais que le problème venait de par là !
    Ce qui me surprenait c'est de devoir l'appeler comme ca plutôt que comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    req.onreadystatechange = newResponseToDiv();
    Du moins quand on appelle une fonction JS sans argument depuis la partie "vue", c'est comme cela qu'on le fait ! avec le "()" en fin de fonction ...

    Ici on appel une fonction JS à partir de JS ... donc je sais pas c'est peut être une norme ...

    Je vais essayer ta solution, ça vient surement de là, merci !
    Tu as compris et solutionner rapidement mon problème !

    Au fait mon code Ajax semble standard ?
    Car j'aime bien faire les choses bien ! Mais j'ai pas forcément l'expérience qu'il me faut !

    LUT !

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 205
    Points : 0
    Points
    0
    Par défaut
    Salut DoubleU et ok merci !

    Par contre là j'appel pas mon javascript sur le "onclick" mais sur le "href" !

    mais merci de l'explication !

    En fait quand je mets le "return false;", il me balance une nouvelle page blanche juste avec false ! hé hé hé !

    et quand je l'enlève ça va bien !
    Ça fonctionnerait surement comme tu le dis, si j'avais utilisé mon action sur "onclick" plutôt que sur "href" !

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 205
    Points : 0
    Points
    0
    Par défaut
    merci Bovino, après une erreur de syntaxe de ma part, ta solution marche effectivement !

    Maintenant encore plus compliqué, je voudrais depuis un formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <form id="login" method="get" action="" onSubmit="return MakeRequest('Log','contenu','listAttribute')"
    //"Log" est une servlet mappé, "contenu" ma div Css centrale, "listAttribute" étant la liste de mes attributs et leur valeurs ...
    Pour ici les attributs étant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <input type="text" name="login" value=""/>
    <input type="text" name="password" value=""/>
    Je voudrais que ma listAttribute contienne soit (name, name.value, password, password.value)

    ou ((name,name.value),(password,password.value)) ...

    Cela me permettrait d'ecrire mon Url dans mes fonctions ajax, dynamiquement !
    Et donc d'avoir une seule ou quelque unes fonctions ajax, qui me servent à tout faire ...

    Ou alors en utilisant dans mon ajax les fonctions getElementById, getElementByName etc ? non ?

Discussions similaires

  1. [AJAX] ajax et function javascript
    Par bailamos dans le forum AJAX
    Réponses: 10
    Dernier message: 17/02/2010, 13h16
  2. [AJAX] Ajax et exécution des fonctions javascript
    Par Bobtop dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 27/06/2006, 15h22
  3. [AJAX] Réponse XML - Functions Javascript
    Par ..:: Atchoum ::.. dans le forum Général JavaScript
    Réponses: 24
    Dernier message: 24/01/2006, 03h02
  4. [AJAX] Ajax ne réactualise pas le javascript ?
    Par shadowbob dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 23/01/2006, 08h26
  5. [AJAX] AJAX et javascript
    Par spud5351 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 20/09/2005, 10h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo