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] Pourquoi ma page se réactualise ?


Sujet :

AJAX

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 176
    Points : 53
    Points
    53
    Par défaut [AJAX] Pourquoi ma page se réactualise ?
    Bonjour à tous,

    J'ai récupéré ce script pour installer la possibilité de voter sur mon site.
    J'ai créé une page de test et tout fonctionne très bien, le vote est pris en compte sans aucune réactualisation de la page.
    J'ai même afficher time(), pour voir si ça se réactualisait et ce n'est pas le cas.
    Voilà la page de test : Page de test

    Par contre lorsque j'insère le script dans le cadre de mon site, lorsque je clique sur une étoile pour voter la page se réactualise !

    Voilà un exemple : Exemple

    A quoi cela est-il du ?

    Merci de votre aide.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Vérifie l'ordre d'appel de tes fichiers .js
    Certains doivent être appelés avant les autres.

    En espérant qu'ils n'entrent pas en conflit les uns avec les autres....

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 176
    Points : 53
    Points
    53
    Par défaut
    Merci.

    Peux-tu m'en dire un peu plus à ce sujet ?

    Sur quoi joue l'ordre d'ouverture des fichiers JS ?

    Comment savoir dans quel ordre les inclure ?

    Merci d'avance.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Je ne peux pas tester ta page à ta place ...

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 176
    Points : 53
    Points
    53
    Par défaut
    Non ça j'imagine bien , mais je cherche à comprendre pourquoi tel script devrait être avant tel autre script.

    J'ai essayé de déplacer mes 2 scripts JS utilisés dans ce code. Une fois en les mettant en premier, et une autre fois en les mettant en dernier dans le code, et le problème de réactualisation reste le même.

    Donc si je comprenais, peut-être que j'arriverai à chercher au bon endroit.

    Merci

  6. #6
    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 : 54
    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
    Classiquement, un script défini des fonctions et des appels de fonctions. Tu peux donc avoir la définition d'une fonction dans un script et son appel dans un autre. Du coup, si tu modifies l'ordre et que l'appel d'une fonction se fait avant qu'elle ne soit définie, ben ça marche moins bien

    Ceci dit, dans ton cas, ça ressemble plus à des liens <a> dont l'action par défaut n'a pas été inhibée, par exemple avec un return false dans le code JavaScript appelé lors du clic.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 176
    Points : 53
    Points
    53
    Par défaut
    Merci Bovino. On est peut-être pas loin.
    Mais alors ce return false, il faut que je le mette au niveau du lien <a> lorsque je clique sur l'étoile pour voter ?

    Par exemple mon lien est comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="db.php?j=1&amp;q=652&amp;t=82.237.9.156&amp;c=5" title="1 sur 5" class="r1-unit rater" rel="nofollow">1</a>
    Il faut que je rajoute return false ?
    Ce qui ferait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="db.php?j=1&amp;q=652&amp;t=82.237.9.156&amp;c=5" title="1 sur 5" class="r1-unit rater" rel="nofollow" return false>1</a>
    J'ai essayé et ça ne change rien.

    Ce qui est étonnant c'est qu'en fait lorsque je veux insérer un vote, je n'ai juste qu'à rajouter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo rating_bar($valeur['id'],''); ?>
    et en fait j'utilise cette même méthode dans mon fichier test et dans mon fichier exemple.
    Je dirai plus qu'il y a un conflit mais je ne sais pas trop où !
    Merci de votre aide.

  8. #8
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    Je ne suis pas allé voir ton site (en fait tu dois nous poster ton code), mais tu devrais faire quelque chose comme ça:
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="db.php?j=1&amp;q=652&amp;t=82.237.9.156&amp;c=5" title="1 sur 5" class="r1-unit rater" rel="nofollow" onclick="fonctionAjax(this.href); return false;">1</a>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function fonctionAjax(url){
    	var xhr = getXhr()
    	xhr.onreadystatechange = function(){
    		if(xhr.readyState == 4 && xhr.status == 200){
    			alert(xhr.responseText);
    		}
    	}
    	xhr.open("GET",url,true);
    	xhr.send(null);
    }
    A+.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 176
    Points : 53
    Points
    53
    Par défaut
    Merci andry.aime.
    J'ai essayé ta technique mais ça ne fonctionne pas.
    J'ai mis la fonction fonctionAjax, dans un des fichiers JS que j'utilise pour cette fonction. C'était bien là qu'il fallait le mettre ?

    Vu que tu me demandes le code, le voilà :
    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
    <?php require('_drawrating.php'); ?>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html lang="en" xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
    <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    <title>Multiple Ajax Star Rating Bars</title>
     
    <script type="text/javascript" language="javascript" src="../js/behavior.js"></script>
    <script type="text/javascript" language="javascript" src="../js/rating.js"></script>
     
    <link rel="stylesheet" type="text/css" href="../style/rating.css" />
    </head>
     
    <body>
     
    <?php echo rating_bar('id21',''); 
    echo time();
    ?>
     
     
    </body>
    </html>
    Ce code est celui de ma page de test.
    Je fais un echo time(); pour être sûr que la page ne se réactualise pas, et effectivement elle ne se réactualise pas. Par contre le vote est bien pris en compte et le résultat du vote s'affiche.

    Dans mon site, j'ai remis le require tout en haut du code, puis l'inclusion des scripts et de la page de style, puis j'ai inséré

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php echo rating_bar('id21',''); 
    echo time();
    ?>
    Cela affiche bien le système de vote, mais lorsque je clique dessus la page se recharge en entier.

    Si vous avez besoin d'autres parties de mon code, demandez moi, mais mon site commence à être un peu compliqué avec beaucoup d'include et de fonction PHP ainsi que du JS pour la gestion de l'API GoogleMapsV3.

    Merci de votre aide.

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 176
    Points : 53
    Points
    53
    Par défaut
    Bonjour,

    Je reviens vers vous, car j'ai avancé ce matin, pour identifier exactement la ligne qui entrait en conflit et qui fait que la page se réactualise en entier !

    Voilà la coupable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       <BODY onload='showVille(1,"<?php echo $ville;?>")' >
    En fait si je retire le onload il n'y a plus de problème.

    Mais le hic, c'est que j'ai absolument besoin d'executer cette fonction JS au moment du chargement de la page.
    Y a t-il une autre solution ? Le mettre dans une balise SCRIPT ?

    Merci de votre aide.

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 176
    Points : 53
    Points
    53
    Par défaut
    En fait le problème est résolu tout simplement en ajoutant ces lignes là à la fin de mon fichier avant la balise </BODY>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <SCRIPT type="text/javascript"> 
    	showVille(1,"<?php echo $ville;?>")
    </SCRIPT>
    Tout roule !

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

Discussions similaires

  1. navigation en ajax dans les page php
    Par speedylol dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 19/10/2006, 15h58
  2. [AJAX] probleme appelle page XML sur autre serveur
    Par ldcarpathes dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 14/08/2006, 18h35
  3. Pourquoi ma page remonte ?
    Par Prue dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 04/01/2006, 08h27
  4. [AJAX] Formulaire prépopuler avec du ajax dans la page
    Par shwin dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 31/10/2005, 15h37

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