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] Fonction abort() pour une XHR


Sujet :

AJAX

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 7
    Points : 1
    Points
    1
    Par défaut [AJAX] Fonction abort() pour une XHR
    Bonjour,

    Je commence dans le développement web et me retrouve bloquée. J'en appelle donc à votre aide :p

    Je cherche à créer deux boutons, le premier servant à lancer l'exécution d'une page (qui boucle indéfiniment) de manière asynchrone, et le second servant à stopper l'exécution de cette page.

    Voilà la partie de mon code concernée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    ...
    var xhr = new XMLHttpRequest();
    xhr.open("GET", "mapage");
    </script>
    <p>
      <input type="button" value="run" onclick="javascript: xhr.send(null)" />
      <input type="button" value="stop" onclick="javascript: xhr.abort()"/>
    </p>
    ...
    EDIT: je précise un peu le comportement de ma page:
    Lorsque je clique sur le bouton run, "mapage" est bien exécutée, mais lorsque je clique sur le bouton stop, l'exécution de "mapage" n'est pas stoppée.

    Où ai-je fauté?

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Tu devrais étre plus clair, et poster le javascript complet !
    En effet je craint que tu ne confonde la création d'une ressource AJAX et son arret par abort, et l'arret de la fonction AJAX elle même
    A te lire
    Christele

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Merci pour ta vive réponse!

    Voici le contenu de ma page HTML:

    Code html : 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
    <html>
      <head>
        <title>Rotor</title>
      </head>
      <body>
    <SCRIPT type="text/javascript" src="jquery.js"></SCRIPT>
    <SCRIPT language="Javascript">
    var xhr = new XMLHttpRequest();
    xhr.open('GET', 'mapage');
     
    </SCRIPT>
        <input type="button" name="bouton1" id="bouton1" value="run" onClick="javascript: xhr.send(null)">
        <input type="button" name="bouton2" value="stop" onClick="javascript: xhr.abort()"-->
     
     </body>
     
    </html>

    Merci de ton aide.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Oui Oui je me doutait de cela, tu fait RUN paarfait la page est appelée par AJAX, mais le ABORT ne sert a rien car l'action AJAX est déja terminée depuis longtemps ... et AJAX n'a pas le pouvoir de modifier ton HTML !
    Tu comprends cela

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Donc la fonction abort() ne fait qu'arrêter l'action AJAX (qui est ici de lancer "mapage"). Comme "mapage" est déjà lancée lorsque j'appuie sur le bouton stop, la fonction abort() ne sert à rien ici.

    Mais comment puis-je arriver à mes fins?

  6. #6
    Invité
    Invité(e)
    Par défaut
    Ta page appelée par AJAX tu l'a envoyée je pense dans un DIV ou aute partie de ta page principale
    Alors ton ABORT doit appeler un bout de javascript qui vide cette partie
    par exemple disons que ta page est dans un <DIV ID=truc >
    le script serait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    document.getElementById('truc').innerHTML='';

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Le InnerHTML sert à modifier le contenu d'une balise c'est bien ça?

    J'ai essayé ceci:

    Code html : 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
    <html>
      <head>
        <title>test</title>
      </head>
      <body>
    <SCRIPT type="text/javascript" src="jquery.js"></SCRIPT>
     <div id="run"><SCRIPT language="Javascript">
    var xhr = new XMLHttpRequest();
    xhr.open('GET', 'mapage');
     
    </SCRIPT></div>
       <input type="button" name="bouton1" id="bouton1" value="run" onClick="javascript: xhr.send(null)">
        <input type="button" name="bouton2" value="stop" onClick="javascript: document.getElementById('run').innerHTML=''"-->
     
     </body>
     
    </html>

    mais ça ne fonctionne pas...

    J'ai également essayé:

    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
    <html>
      <head>
        <title>test</title>
      </head>
      <body>
    <SCRIPT type="text/javascript" src="jquery.js"></SCRIPT>
    <SCRIPT language="Javascript">
    var xhr = new XMLHttpRequest();
    xhr.open('GET', 'mapage');
     
    </SCRIPT>
       <div id="run"><input type="button" name="bouton1" id="bouton1" value="run" onClick="javascript: xhr.send(null)"></div>
        <input type="button" name="bouton2" value="stop" onClick="javascript: document.getElementById('run').innerHTML=''"-->
     
     </body>
     
    </html>
    Le bouton run est bien supprimé de ma page mais "mapage" s'exécute toujours.

  8. #8
    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 : 53
    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 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    Je ne suis vraiment pas sûr que tu comprennes bien ce que tu fais...
    le premier servant à lancer l'exécution d'une page (qui boucle indéfiniment) de manière asynchrone
    Non, ton premier bouton ne fait pas ça. Il fait juste (et de façon particulièrement peu orthodoxe pour ne pas dire sale...) une requête AJAX.
    le second servant à stopper l'exécution de cette page.
    Certes... le problème, comme le fait remarquer Christele, c'est qu'il est fort peu probable qu'entre le moment où tu cliques sur le premier bouton et celui où tu cliques sur le second, la requête n'ai pas abouti, il n'y a alors plus rien à annuler...

    D'autre part
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onClick="javascript: ..."
    le pseudoprotocole javascript: n'a rien à faire dans un attribut d'événement. onclick attendant du code JavaScript, c'est inutile de le préciser.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('run').innerHTML=''
    quel élément dans ta page possède l'id run ?
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  9. #9
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    L'élèment <div> comme m'a proposé de faire Cristele

  10. #10
    Invité
    Invité(e)
    Par défaut
    Je te recommandes de travailler un peut les bases, tu me semble
    débuter même dans la gestion JavaScript/HTML sans même parles d'AJAX
    qui viendra ensuite.
    Ne te décourages pas, nous avons toutes et tous débuté et pataugé !
    Peux-étre, si tu veux aller malgrés tout plus loin ICI,
    pourrais-tu poster ton HTML complet ainsi que la page "mâpage"

    Bon courage
    Christele

  11. #11
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Il est vrai que le web n'est pas ma tasse de thé et que j'ai certainement dû sauter quelques étapes... :s

    En ce qui concerne "mapage", c'est une page écrite en C. Mais je pense pas qu'il soit important de donner plus de détails sur celle-ci...

    Tout ce que je souhaite faire c'est pouvoir lancer cette exécution de ma page en C puis la stopper.

  12. #12
    Invité
    Invité(e)
    Par défaut
    S'il sagit d'un executable (C compilé) alors il faut utiliser la procédure CRON
    Recherche sur Google
    Par contre j'attends si tu veux de l'aide la page HTML contenant l'AJAX, pas un bout de code !
    A++
    christele

  13. #13
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Un CRON ne sert pas à automatiser des tâches à des heures précises?

    En ce qui concerne la page HTML, je t'ai déjà donné l'intégralité de celle-ci :s

Discussions similaires

  1. fonction mail() pour une adresse mail invalide
    Par Royade dans le forum Langage
    Réponses: 0
    Dernier message: 28/05/2012, 16h54
  2. Fonction Min pour une plage évolutive
    Par MelkInarian dans le forum Excel
    Réponses: 2
    Dernier message: 07/06/2010, 12h19
  3. Réponses: 1
    Dernier message: 28/07/2009, 13h22
  4. fonctions "quitter" pour une fenetre
    Par paihpaihtte dans le forum GTK+ avec C & C++
    Réponses: 2
    Dernier message: 14/03/2007, 21h39
  5. Pb fonction max pour une cellule
    Par fmris dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 22/11/2006, 15h12

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