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] Affichage résultat ajax.request quand load page


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 6
    Points : 5
    Points
    5
    Par défaut [AJAX] Affichage résultat ajax.request quand load page
    Bonjour mesdames messieurs les développeurs,

    j'utilise :
    -windows vista/XP
    -wamp (apache,php,mysql)
    -IE7
    -freebox
    -librarie prototype.js


    Je poste ce message car je suis face à un problème pour lequel je n'ai pu trouver l'ébauche d'une réponse sur le web.

    J'essaye de développer une page dans laquelle le client va pouvoir entrer des données dans un <input type="text">. Ces données sont enregistrées avec l'ID du client dans une base MySql, via un AJAX.REQUEST. Ce dernier fait donc appel à un script php exécutant une requête SQL d'update. Ce partie fonctionne parfaitement.

    Le problème vient d'un autre AJAX.REQUEST donc l'objectif est de remplir les <input type="text"> lors du load de la page. Lors du premier load, les données insérées dans les input sont bien celles de la base de données. Mais, si le client modifie ces valeurs et recharge la page sur la même session du navigateur internet, les données insérées dans les inputs sont celles du premier load, alors que la base de données a bien été updatée. Evidemment, en ouvrant une nouvelle session Internet Explorer, les dernières données sont bien affichées.

    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
    25
    26
    27
    28
    <script src=\"http://marcoletpierre.dyndns.org/Functions/PrototypeJS/Prototype.js\" type=\"text/javascript\"></script>
    <script type=\"text/javascript\">
     
    Event.observe(window, 'load', init, false);
     
    	function init(){
    		new Ajax.Request(
    			'GetProfileWithID.php',{
    				method:'get',
    				parameters: {MemberID2: $MemberID},
    			        onSuccess: function(transport) {
    					var tabl=transport.responseText.evalJSON();
    					$('Name').value=tabl['Members_Name'];
    					$('Surname').value=tabl['Members_Surname'];
    			        }
    			}
    		);
     
    	}
    	function ChangeName(){
    		new Ajax.Request(
    			'UpdateProfile.php',{
    				method:'get',
    				parameters: {MemberID2: $MemberID, Name2: $('Name').value ,Surname2: $('Surname').value}
    			}
    		);
    	}
    </script>
    En essayant de cerner la cause de mon tourment, j'ai remarqué que si, après que la page ait été chargée, je remplacais dans la function 'init' ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $('Name').value=tabl['Members_Name'];
    $('Surname').value=tabl['Members_Surname'];>
    par cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $('Name').value='Hello';
    $('Surname').value='World';>
    lorsque la page est rechargée, les valeurs de l'input sont bien 'Hello' et 'World'. Ce qui permet de conclure que la fonction 'init' est exécutée sans que la variable 'tabl' ne soit véritablement rechargée.
    Donc, comment dois-je m'y prendre pour que cette variable soit rechargée à chaque load de la page avec les données renvoyées par la requête SQL du script php visé?

    J'espère avoir ne pas avoir été trop long ou trop confus, et j'espère également ne pas poser une question dont la réponse figure déjà quelque part (même si j'ai déja beaucoup cherché). Et d'autre part, je m'excuse d'avance si passe à coté d'une évidence, car je suis un débutant de quelques jours en javascript et ajax.

    Merci d'avance pour vos réponses.

    Pierre

  2. #2
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Salut,

    il s'agit peut-être d'un problème de cache de la requête ajax ?

    Tu pourrais essayer d'ajouter un paramètre changeant à ta requête
    par exemple

    parameters: {MemberID2: $MemberID, dummy: new Date().getTime() },

    d'autre part, pour la mise à jour de tes donnée, une requête POST serait plus
    judicieuse (voir les principes REST)
    Si ton code fait plus d'une ligne, c'est que tu as mal choisi ton langage !

  3. #3
    Futur Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Salut Marcha,
    Merci beaucoup à toi, ceci fonctionne parfaitement.
    Mais est-ce la seule solution pour forcer la requête à être réexécutée?
    En tout cas merci beaucoup.

    Petite question: j'ai modifié le GET en POST, mais dans le cadre d'une requête AJAX en quoi est-ce plus judicieux ?

    Pierre

  4. #4
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Non, ce m'est pas la seule solution, tu peux aussi gérer les entêtes HTTP
    appropriés pour la gestion du cache (pragma, cache-control, etc...)

    Mais cette solution est simple et fiable.

    En ce qui concerne l'usage d'un GET ou d'un POST, tu peux jeter un oeil
    sur les principes REST (voir sous wikipedia est suivre les liens)

    Un GET ne devrait pas affecter l'état de la base de donnée. Donc POST
    est préférable pour faire un update.

    Un exemple de mésaventure à l'appui:

    J'avais fait des liens pour supprimer des enregistrements dans mon agenda
    en utilisant la méthode GET, par exemple: remove.php?id=2

    Tout marche bien jusqu'au jour ou google a indexé mon agenda, il a visité
    tous les liens et donc supprimé tous les enregistrement :-)

    C'est juste un exemple, qui n'a rien à voir avec Ajax. Mais il y a plein d'autres
    bonne raisons pour utiliser les methodes appropriées suivant les actions
    souhaitée (je te laisse lire les principes REST).
    Si ton code fait plus d'une ligne, c'est que tu as mal choisi ton langage !

  5. #5
    Futur Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Merci beaucoup pour ton aide. J'irai faire un tour sur Wikipédia.

    Bonne continuation
    A bientôt

    Pierre

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AJAX] Afficher résultat Ajax dans la source d'une page
    Par PoMdaPiMp dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 06/05/2008, 17h22
  2. [AJAX] simple affichage avec Ajax.Request ne fonctionne pas
    Par karimphp dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 18/12/2007, 09h35
  3. [AJAX] Affichage avec AJAX
    Par bernylap dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 11/10/2007, 16h55
  4. [AJAX] Affichage en Ajax
    Par RichardP dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 03/05/2007, 16h02
  5. [AJAX] Affichage de résultats
    Par eowene dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 05/12/2006, 17h29

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