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

Développement Web en Java Discussion :

Problème de paramètre dans OPEN GET ajax


Sujet :

Développement Web en Java

  1. #1
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Points : 479
    Points
    479
    Par défaut Problème de paramètre dans OPEN GET ajax
    Bonjour à tous les développeurs !

    J'ai un frameset, "encapsulant" un formulaire de contact :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <frameset rows="*" onbeforeunload="sendRequest()">
              <frame name="contenu" src="formulaire.php" frameborder="0" noresize>
         </frameset>
    ainsi que la fonction AJAX correspondante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function sendRequest()
              {
         XHR = getXMLHttpRequest()
         if (typeof(XHR) == "object")
              {
              XHR.open("GET", "php/destroy.php", false);
              XHR.send();
              }
              }
    Je vous ai fait grâce du code relatif à l'objet XMLHttpRequest, mais tout fontionne correctement.
    Le but à atteindre est de tuer une session quand on quitte le frameset (un peu comme en rando: On ramasse son garbage !)

    Quel est mon souci ?
    Si je veux paramétrer la fonction sendRequest en transmettant le non du programme à appeler '(ici : "php/destroy.php")
    la requête n'est plus exécutée !
    ---onbeforeunload="sendRequest("php/destroy.php")"
    ---function sendRequest(MON_URL) avec XHR.OPEN5 "GET", MON_URL, false); // ne fonctionne plus !

    Pourquoi ce fignolage ?... Je voudrais en réalité pouvoir réutiliser la fonction à un autre moment et pour soumettre une requête différente ; Notamment via "parent.sendRequest()" et ce à partir de la frame "contenu".

    D'avance merci, (j'ai déjà cherché un peu partout, mais en vain). Il y une subtilité...

  2. #2
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Points : 479
    Points
    479
    Par défaut problème de paramètre dans OPEN Ajax
    Bonjour à tous les développeurs !

    J'ai un frameset, "encapsulant" un formulaire de contact :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <frameset rows="*" onbeforeunload="sendRequest()">
         <frame name="contenu" src="formulaire.php" frameborder="0" noresize>
    </frameset>
    ainsi que la fonction AJAX correspondante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function sendRequest()
     {
     XHR = getXMLHttpRequest()
     if (typeof(XHR) == "object")
          {
          XHR.open("GET", "php/destroy.php", false);
          XHR.send();
          }
     }
    Je vous ai fait grâce du code relatif à l'objet XMLHttpRequest, mais tout fontionne correctement.
    Le but à atteindre est de tuer une session quand on quitte le frameset (un peu comme en rando: On ramasse son garbage !)

    Quel est mon souci ?
    Si je veux paramétrer la fonction sendRequest en transmettant le non du programme à appeler (ici : "php/destroy.php")
    la requête n'est plus exécutée !
    - onbeforeunload="sendRequest("php/destroy.php")"
    - function sendRequest(MON_URL) avec XHR.OPEN5 "GET", MON_URL, false); // ne fonctionne plus !

    Pourquoi ce fignolage ?... Je voudrais en réalité pouvoir réutiliser la fonction dans d'autres circonstances ; Notamment via "parent.sendRequest()" et ce à partir de la frame "contenu".

    D'avance merci, (j'ai déjà cherché un peu partout, mais en vain). Il y une subtilité...

  3. #3
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Tu prends le problème à l'envers à mon avis.

    Il faut activer périodiquement la session via un appel ajax et limiter la durée de vie de la session au strict minimum (entre 1 et 5 mn).
    Si ton utilisateur ferme son navigateur, dans ton cas, l'appel n'est pas fait et la session reste active.
    Dans mon cas, il peut faire ce qu'il veut, mais dès que les appels ajax cessent, la session est condamnée à court terme (s'il reste sur la page, pas de problème, la session étant "utilisée" par l'appel ajax, elle restera active).
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Points : 479
    Points
    479
    Par défaut paramétrage OPEN GET Ajax
    Bonjour !
    J'ai résolu mon problème qui provenait du code lors de l'appel de la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    onbeforeunload="sendRequest("php/destroy.php")"     //  ne fonctionne pas !
    onbeforeunload="sendRequest(\"php/destroy.php\")"  // ne fonctionne pas ! 
    onbeforeunload="sendRequest('php/destroy.php')"      // YES !
    onbeforeunload=sendRequest("php/destroy.php")     // YES !
    En plus, j'avais un ';' qui traînait dans mon code, m'empêchant de faire des tests concluants (une erreur qui en cache une autre...)

    Quant à la finalité de l'exercice :
    Lors du click sur la croix, la session est bien détruite, car "onbeforeunload" du frameset est activé, entrainant la requête de destruction.
    J'ai construit cela ainsi, pour éclaircir mon code :
    - Le frameset gère le "click croix", la frame gère le formulaire et son "submit", ainsi que les transactions subséquentes...
    - Avant, je procédais autrement, mon formulaire gérait, et la croix et le submit, mais le code était brouillon...
    - De plus il me fallait aussi gérer le "click croix" dans l'affichage succédant au traitement des données.
    C'était lourd !
    Par ailleurs, cette façon de faire permet, à toute transaction du frame de faire une requête Ajax très facilement. (Le fils utilise les outils de son père...)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    parent.SendRequest('toute_transaction');
    Cordialement

  5. #5
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Si on recharge le frame, l’évènement est déclenché...
    En plus, si tu fermes le navigateur, l'action n'est pas appelée pour tous les navigateurs (ça marche avec IE).
    Bref, tu fais comme tu veux...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Points : 479
    Points
    479
    Par défaut paramétrage OPEN GET Ajax
    Bonjour !
    Je n'avais pas tout testé (notamment le refresh), par ailleurs il y avait un dysfonctionnement \ FIREFOX.
    Après consultation de nombreux forums, il apparait qu'onbeforeunload ne doit pas être écrit n'importe-comment. J'ai donc retenu le code suivant qui convient à IE et FF, et il n'y plus d'argument dans la fonction.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <frameset rows="*" onbeforeunload="sendRequest()" >
         <frame name="contenu" src="formulaire.php" frameborder="0" noresize scrolling="no">
    </frameset>
    Ma fonction senRequest est devenue :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function sendRequest()
              {
         if ( window.event ) alert(window.event.type) ;
         XHR = getXMLHttpRequest();
         var argument = scriptName ;
         if (typeof(XHR) == "object")  
              {                    
              XHR.open("GET", argument, false);
              XHR.send();
              }
              }
    Il me suffit d'alimenter la variable globale scriptName pour toute requête et à n'importe quel moment !

    PS : Les tests sont un peu laborieux sous FF, Opera et Chrome, l'objet window.event étant exclusivement IE...

  7. #7
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    As-tu essayé de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <frameset rows="*" onbeforeunload="sendRequest(event)" >
    Dans la fonction sendRequest, il faut tester le paramètre dans le genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    function getSource(ev)
    {
        var evt = ev;
        if (!ev) evt = window.event;
     
    ...
     
    }
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Points : 479
    Points
    479
    Par défaut paramétrage Open GET Ajax
    Bonjour !

    J'ignorais la spécificité du window.event, et j'ai galéré pour mes tests :
    A défaut d'affichage de l'évènement, je devais en effet vérifier à chaque étape dans C:/wamp/tmp que mes sessions étaient bien détruites ou modifiées, ou bien dans access.log que mes XHR.open("GET") étaient bien exécutés. (Quel boulet !...)
    J'aurais dû en effet faire comme vous me le suggérez, ou plus simplement ajouter dans ma fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (!e) e = window.event ;
    alert (e.type) ;
    Je laisse encore un peu ce POSTen 'non résolu' (je débute en dév web, et toute suggestion est bienvenue)

    Un grand merci aux animateurs de ce site très PRO !

  9. #9
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Si je peux me permettre un conseil, je te suggère de très vite utiliser jQuery pour tout ce qui est du javascript, c'est absolument génial...
    Et tu t'affranchis des différences entre navigateurs
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  10. #10
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Points : 479
    Points
    479
    Par défaut
    Oui, il faudra bien que je m'y mette un jour si je veux progresser !

    Pour en revenir à mes test, le problème était plus subtil que ce que je pensais :
    En réalité je galére sous FF et consorts, à cause de l'instruction alert() qui ne se déclenche pas à cause du frameset. J'avais déjà lu quelquechose là-dessus, mais je ne me rappelle plus où...
    Par ailleurs, je n'ai même pas vérifié si j'avais un warning : Je ne me sers pas de firebug ; Bien qu'étant chargé, sa complexité m'en dissuade l'utilisation...

    Quand je teste je suis toujours obligé de vérifier dans "wamp/tmp" ou dans "logs/access.log" que tout se déroule bien.
    Sous IE : Pas de problème ; C'est pas souvent...

    Cordialement

  11. #11
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Points : 479
    Points
    479
    Par défaut
    Oui c'était bien ça !
    Si je place un "alert" dans sendRequest(), non seulement il ne s'exécute pas mais il interrompt la fonction !

    Un comble !... Je veux débugger de façon "on ne peut plus artisanale" et cela ne fonctionne pas !
    Quant à Firebug, il reste muet... Pas de message, rien... Je l'ai désinstallé celui-là : Pas besoin du tableau de bord d'un A-320, le manche suffira !

    Bref, toutes ces péripéties ne m'incitent pas du tout à "investir" dans Jquery ou tout autre outil...

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

Discussions similaires

  1. [AJAX] Paramètre dans OPEN GET Ajax
    Par iakou dans le forum AJAX
    Réponses: 5
    Dernier message: 15/05/2014, 18h49
  2. Réponses: 0
    Dernier message: 30/10/2007, 15h45
  3. Réponses: 1
    Dernier message: 06/03/2007, 11h57
  4. Problème avec paramètres dans un <messagebundle>
    Par imagine64 dans le forum JSF
    Réponses: 6
    Dernier message: 12/02/2007, 17h27
  5. Problème de paramètres dans mon code javascript
    Par cocacollection dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 15/03/2006, 10h53

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