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

AJAX Discussion :

[AJAX] Affichage en AJAX


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 278
    Par défaut [AJAX] Affichage en AJAX
    Bonjour,

    Comme le titre du sujet l'indique, j'aimerais afficher des enregistrements issues de la base de données en AJAX.

    Comme je l'explique en commentaires dans les deux fichiers PHP, je suis arrivé à établir une transmission entre les deux pages, j'arrive à envoyer la variable mais je n'arrive pas à la recevoir dans la page du traitement PHP.

    En essayant de régler la réception de la variable, j'ai fait buggé l'envoi. Avant, il n'y avait pas de message d'erreur maintenant si !

    Vous trouverez plus d'explications dans les fichiers PHP.

    C'est quand même mieux que l'autre fois !

    En pièces jointes, je vous mets les deux fichiers.

  2. #2
    Membre chevronné Avatar de freddou17
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2013
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2013
    Messages : 341
    Par défaut
    Slt,

    Première chose

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr.open("GET", "recuperation_donnees_correction.php", true);
    n'est pas compatible avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr.send (id_cours_tp);
    si tu es en POST, tu mets les paramètres dans xhr.send("id_cours_tp="<?php echo $id_cours_tp; ?>)si tu es en GET, les paramètres se passent après l'url
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr.open("GET", "recuperation_donnees_correction.php?id_cours_tp="<?php echo $id_cours_tp; ?>, true);
    En regardant de plus près tes fichiers

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $id_cours_tp = mysql_real_escape_string($_POST['id_cours_tp']);// Identifiant du Cours/TP dynamique; // J'ai essayé $_POST['id_cours_tp'] et $_GET['id_cours_tp'] mais pareil
    ne pouvait pas marcher avec GET ou POST ...



    ++

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 278
    Par défaut
    On avance puisque maintenant les données s'affichent mais pas dynamiquement.
    Lors des tests, des messages d'erreurs s'affichent :
    - "Error: returned status code 0"
    - "Error: returned status code 200 OK".

    Si je poste une réponse, elle ne s'affiche pas dynamiquement : il faut recharger la page pour qu'elles s'affichent.

    Comment faire pour éliminer ces deux message d'erreurs et pour faire afficher les données SANS rechargement de la page ?

    J'ai modifié la fonction go, la voici :
    Code javascript : 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
    <script type='text/javascript'>
    function go(id_cours_tp) { // Envoi de l'identifiant du cours
    	var xhr =  init_xhr();
     
    	xhr.onreadystatechange = function() { 
            if(xhr.readyState == 4)
         {
            if(xhr.status == 200)
            { 
    		reponse=xhr.responseText;
                 reponse=xhr.responseText; 
            document.getElementById('reponse').innerHTML = reponse;
    		} 
           else 
            { 
                  document.ajax.dyn.value="Error: returned status code " + 
                       xhr.status + " " + xhr.statusText; 
           } 
        } 
    	} 
    xhr.open("POST", "recuperation_donnees_correction.php", true);
    xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
     
    var id_cours_tp = '<?php echo $id_cours_tp; ?>';
    xhr.send("id_cours_tp=<?php echo $id_cours_tp; ?>");
    }
    </script>

    Il n'y a plus de message d'erreur mais ce n'est toujours pas dynamique, il faut recharger la page pour voir les nouvelles réponses postées.
    Comment faut-il faire pour rendre dynamique l'affichage des réponses (sans rechargement de la page) dans le <div> reponse ?

    A noter que j'appelle la fonction avec <body onload="go(<?php echo $id_cours_tp; ?>);">.

  4. #4
    Membre chevronné Avatar de freddou17
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2013
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2013
    Messages : 341
    Par défaut
    Pas trop vite...prend le temps de debbuger et de transmettre les résultats de ton debug, (à partir de quel echo, quelle alert... ça plante...).
    De plus la fonction que tu affiches dans le post n'est pas la même que dans ton fichier joint (un peu de concordance serait le bienvenu).

    Pour les messages d'erreurs supprime

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    else {
     // La réception des données ne s'effectue pas
     alert("Error: returned status code " + xhr.status + " " + xhr.statusText);
    }
    de ta fonction go

    Ensuite que fais le résultat de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert(xhr.responseText)
    qui/quoi appelle go mis à pars onload parce que onload est appelée qu'une fois, au chargement de la page






  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 278
    Par défaut
    En pièces jointes, tu trouveras les trois fichiers. On part de ceux-là comme base.
    -correction_reponses_cours.php est la page qui permet d'afficher les réponses du cours choisi (c'est sur celle-là que je voudrais afficher les enregistrements dynamiquement en AJAX)
    -recuperation_donnees_correction.php est la page dans laquelle il y a le traitement PHP qui permet d'afficher les données
    -gestion_cours_tpbis.php est la page dans laquelle il y a les deux formulaires : celui pour modifier les cours et celui pour corriger les cours (c'est celui-ci qui nous intéresse)
    Avec ce code, je n'ai pas d'erreur qui s'affiche.

    Il affiche les réponses issues de la base de données comme je voudrais... sauf qu'il ne le fait pas dynamiquement c'est-à-dire quand je teste : je choisi un cours, j'arrive sur la page (correction_reponses_cours.php) sur laquelle je vois les réponses, je vais poster une réponse et je retourne sur la page (correction_reponses_cours.php) sur laquelle la réponse postée n'est pas affichée. Pour pouvoir la voir, il faut recharger la page alors que je voudrais qu'elle s'affiche toute seule, sans recharger la page.

    La fonction go() est appelée qu'une fois, au chargement de la page. Est-ce qu'il faut faire un setTimeout('go()',2000) ? Comment lui faire comprendre : dès qu'il y a un enregistrement de plus dans la base de données, tu l'affiches automatiquement, tout seul, sans rechargement de la page ?
    A prendre en compte aussi : J'ai mis un <textarea> pour pouvoir poster des commentaires et des boutons radios. Il faut, donc, laisser du temps à l'utilisateur pour pouvoir y répondre.

  6. #6
    Membre chevronné Avatar de freddou17
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2013
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2013
    Messages : 341
    Par défaut
    le setTimeout est une solution pour controler l'enregistrement d'une nouvelle réponse...

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

Discussions similaires

  1. [AJAX] affichage avec Ajax
    Par Wizard50 dans le forum AJAX
    Réponses: 1
    Dernier message: 29/03/2010, 07h46
  2. [AJAX] Affichage PeriodicalUpdater Ajax
    Par Tsoko dans le forum AJAX
    Réponses: 2
    Dernier message: 21/05/2009, 08h33
  3. [AJAX] Affichage résultat ajax.request quand load page
    Par marcolet.pierre dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 05/01/2008, 16h27
  4. [AJAX] Affichage avec AJAX
    Par bernylap dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 11/10/2007, 16h55
  5. [AJAX] Affichage en Ajax
    Par RichardP dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 03/05/2007, 16h02

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