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 :

différence reload et location + pb très bizarre pour experts


Sujet :

JavaScript

  1. #1
    Membre actif Avatar de grinder59
    Inscrit en
    Septembre 2005
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 707
    Points : 215
    Points
    215
    Par défaut différence reload et location + pb très bizarre pour experts
    Bonjour,

    mon site présente un petit problème très curieux :

    depuis la page principale, j'ouvre un pop up avec un formulaire (avec controle des champs en Ajax), lorsque je clique sur le bouton envoyer du formulaire, certaines actions se réalisent (enregistrement dans une BDD), puis je recharge la page opener et je clos le pop up.

    Chose très étrange, si j'utilise window.location.reload(), je n'ai aucun souci, en revanche si j'utilise window.location='mapage.php?p=$valeur', au bout de 5 utilisations du formulaire du pop up (et 5 donc window.location), ma page principale ne se recharge pas (enfin hyper lentement et le chargement ne se finit pas), comme si elle était dans une boucle infinie (avec impossibilité de réouvrir un pop up celui ci se chargeant tout aussi lentement) et lorsque je la ferme, j'ai un 'Acrobat IEHelper la mémoire ne peut pas être read'. Dernière précision, lorsque je suis sur ma page principale (l'opener) et que je recharge via F5, je n'ai aucun souci.

    Quelqu'un aurait-il une idée du pourquoi?

    Evidemment, je ne veut pas utiliser le reload pour éviter de repasser des paramètres à ma page principale

    Merci de votre aide
    Fabien

  2. #2
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    j'ai eu un probleme similaire dans firefox seulement et pas ie (et toi ?)
    en fait il semblerais que quand tu fais un location=
    firefox teste si tu reste ou pas sur la meme page.

    La solution est de passer par un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    window.location.replace('mapage.php?p=$valeur')
    en esperant que ca resolve ton problème
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  3. #3
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    window.location.reload(true)
    peut te servir dans ce cas;

  4. #4
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    c est ce qu il dit, que reload marche mais pas location=

    le probleme de reoad c'est si on veut changer un parametre get
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  5. #5
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    oui oui, je suis à l'ouest aujourd'hui...

    mais elle est passée comment la valeur de l'argument get? de toute façon elle ne peut pas être écrite en php; donc c'est quoi le mode d'affectation? tu peux montrer du code?

  6. #6
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    ben tu peux le récupérer dans un input d'un form par exemple ou grace a xhr
    apres c'est de la concatenation de chaine pour ce que tu met dans le replace.
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  7. #7
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    ouais ben j'ai ptêt pas compris quelle page se rechargeait...

  8. #8
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    la page opener apparement, donc ca peut aussi etre un argument qui vient de la popup enfin ca se trouve il veut pas faire de get non plus einh
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  9. #9
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    tiens je m'aperçois que j'avais lu de travers: il manque une propriété href dans ce reload;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    window.location.href='mapage.php?p=$valeur'

  10. #10
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    ouais... quoique...

  11. #11
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    quand même, on verrait la page, on serait content de tester

  12. #12
    Membre actif Avatar de grinder59
    Inscrit en
    Septembre 2005
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 707
    Points : 215
    Points
    215
    Par défaut
    tout d'abord un grand merci à vous pour vos efforts...

    malheureusement, le problème reste entier (je suis sous IE) :

    reload fonctionne

    replace et location.href buggent après 3 ou 5 utilisations du pop up.

    Je ne veux pas utiliser de reload car si ma page principale appelante est :
    mapage.php?variable=$valeur, la variable sera alors réinterprétée, ce que veux éviter (et donc faire un simple window.opener.location.href=mapage.php, qui, pour l'instant, plante).

    Précision supplémentaire, avec href, la seule image (bandeau de grande taille) de la page apparait juste après les reste contrairement à relaod ou elle apparait en même temps que le reste.

    Je vois vraiment pas d'ou peut provenir le pb...

  13. #13
    Membre actif Avatar de grinder59
    Inscrit en
    Septembre 2005
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 707
    Points : 215
    Points
    215
    Par défaut
    ptêtre que le moyen de contourner le problème en faisant en sorte que le reload ne permette pas à l'opener d'interpréter les variables de son url...

  14. #14
    Membre actif Avatar de grinder59
    Inscrit en
    Septembre 2005
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 707
    Points : 215
    Points
    215
    Par défaut
    Element supplémentaire :
    sur ma page principale, j'ai placé le lien suivant :
    <a href=# onClick="window.location.href='mapage.php'>test</a>

    et là, aucun problème... pas d'erreur (après plus de 30 essais successifs, alors qu'avant, ça plantait après seulement 3 essais).

    Donc en résumé, si le rechargement par window.location provient du pop up, il bugge, mais si il est directement sur la page principale, il fonctionne...

  15. #15
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    peut etre que le fait que tu utilises ajax dans ta popup te fait perdre de temps en temps le opener ?

    tu devrais tenter un truc comme ca, a mettre dans la popup :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var myopener;
    window.onload=function(){
         myopener = window.opener;
    }
    et apres, quand tu veux recharger ta page, tu fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myopener.location.replace('mapage.php');
    bon ça changera peut etre rien mais on sait jamais.
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  16. #16
    Membre actif Avatar de grinder59
    Inscrit en
    Septembre 2005
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 707
    Points : 215
    Points
    215
    Par défaut
    non, malheureusement cela ne fonctionne pas.

    Par contre, après une grosse journée d'investigation, il semblerait que le plantage ne vienne pas du pop up et du window.opener.location.href comme je le pensais au début mais plutôt de la chose suivante :

    dans mon formulaire du pop up, à chaque champs modifié, je lance la fonction javascript qui va exécuter le php de la façon suivante :

    POPUP :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type=text onChange="script_js();">

    FICHIER DE FONCTION JS :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function script_js(){
      // objet ajax http précédemment défini
      http.open("GET", script_php.php);
      http.onreadystatechange = handleHttpResponse;
      http.send(null);
    Si le fichier script_php.php est vide, ça fonctionne (pas de plantage), si le fichier script_php.php ne contient que l'instruction : session_start(); ça plante...

    Quelqu'un aurait-il une idée, un tuyau?

    Merci beaucoup...

  17. #17
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    session_start envoit les headers donc en fonction de ce que tu récupère ca peut faire planter.

    Surtout si tu te sert de responseXML.

    En ajax, ta session ne servira a rien de toute manière.

    C'est surtout donc ce que tu veux faire dans handleHttpResponse qu il faut nous dire
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  18. #18
    Membre actif Avatar de grinder59
    Inscrit en
    Septembre 2005
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 707
    Points : 215
    Points
    215
    Par défaut
    voici le code du traitement de la réponse:

    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
    function handleHttpResponse(){
      if (http.readyState == 4){
        if(http.ResponseText==0){
            choix_rv.decision.value = 'OK';
    	choix_rv.bt_enr.disabled = false;
    	//choix_rv.decision.value = http.ResponseText;      
        }
        else{
          if(http.ResponseText==1){
            choix_rv.decision.value = 'pas OK';
            choix_rv.bt_enr.disabled = true;
            //choix_rv.decision.value = http.ResponseText;
          }
          else{
            choix_rv.decision.value = 'erreur 1';
            choix_rv.bt_enr.disabled = true;
            //choix_rv.decision.value = http.ResponseText;
          }     
        }      
    //  choix_rv.decision.value = http.ResponseText;
      }
    }

  19. #19
    Membre actif Avatar de grinder59
    Inscrit en
    Septembre 2005
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 707
    Points : 215
    Points
    215
    Par défaut
    après plusieurs essais, apparemment c'est bien le session_start de mon fichier de script PHP ou les session_start des fichiers dont je fais l'include qui font planter le truc...

    donc apparemment session_start et ajax sont pas super copains !

  20. #20
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    quand tu fais un session_start, ca envoit des données a ton navigateur pour lui demnader d'écrire un cookie.

    Effectivement, avec xhr il va pas aimer.

    Mais de toute manière ta session ne sert a rien a cet endroit là !

    C'est dans la page ou se trouve ton code qui interroge le serveur en ajax qu'il faut que tu gère la sessions.
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Problème d'impression très bizarre (pour le moment)
    Par over_score dans le forum AS/400
    Réponses: 0
    Dernier message: 24/10/2012, 16h37
  2. Réponses: 2
    Dernier message: 30/05/2009, 14h04
  3. [JDBC] Erreur très bizarre dans ExecuteQuery
    Par boudou dans le forum JDBC
    Réponses: 6
    Dernier message: 17/03/2006, 18h33
  4. Problème très bizarre avec COUNT
    Par Nomade95000 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 13/10/2005, 14h12
  5. Réponses: 4
    Dernier message: 28/09/2002, 00h00

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