Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 13 sur 13
  1. #1
    Invité de passage
    Inscrit en
    décembre 2012
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : décembre 2012
    Messages : 7
    Points : 0
    Points
    0

    Par défaut 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 :
    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
    Membre Expert
    Avatar de christele_r
    Femme Profil pro Christele Rubneau
    Responsable de service informatique
    Inscrit en
    novembre 2009
    Messages
    1 351
    Détails du profil
    Informations personnelles :
    Nom : Femme Christele Rubneau
    Âge : 66
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : novembre 2009
    Messages : 1 351
    Points : 2 463
    Points
    2 463

    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
    Invité de passage
    Inscrit en
    décembre 2012
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : décembre 2012
    Messages : 7
    Points : 0
    Points
    0

    Par défaut

    Bonjour,

    Merci pour ta vive réponse!

    Voici le contenu de ma page HTML:

    Code html :
    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
    Membre Expert
    Avatar de christele_r
    Femme Profil pro Christele Rubneau
    Responsable de service informatique
    Inscrit en
    novembre 2009
    Messages
    1 351
    Détails du profil
    Informations personnelles :
    Nom : Femme Christele Rubneau
    Âge : 66
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : novembre 2009
    Messages : 1 351
    Points : 2 463
    Points
    2 463

    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
    Invité de passage
    Inscrit en
    décembre 2012
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : décembre 2012
    Messages : 7
    Points : 0
    Points
    0

    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
    Membre Expert
    Avatar de christele_r
    Femme Profil pro Christele Rubneau
    Responsable de service informatique
    Inscrit en
    novembre 2009
    Messages
    1 351
    Détails du profil
    Informations personnelles :
    Nom : Femme Christele Rubneau
    Âge : 66
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : novembre 2009
    Messages : 1 351
    Points : 2 463
    Points
    2 463

    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 :
    1
    2
     
    document.getElementById('truc').innerHTML='';

  7. #7
    Invité de passage
    Inscrit en
    décembre 2012
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : décembre 2012
    Messages : 7
    Points : 0
    Points
    0

    Par défaut

    Le InnerHTML sert à modifier le contenu d'une balise c'est bien ça?

    J'ai essayé ceci:

    Code html :
    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 :
    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
    Responsable Développement Web

    Avatar de Bovino
    Homme Profil pro Didier Mouronval
    Développeur Web
    Inscrit en
    juin 2008
    Messages
    22 034
    Détails du profil
    Informations personnelles :
    Nom : Homme Didier Mouronval
    Âge : 44
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2008
    Messages : 22 034
    Points : 80 674
    Points
    80 674

    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 :
    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 :
    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
    Invité de passage
    Inscrit en
    décembre 2012
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : décembre 2012
    Messages : 7
    Points : 0
    Points
    0

    Par défaut

    L'élèment <div> comme m'a proposé de faire Cristele

  10. #10
    Membre Expert
    Avatar de christele_r
    Femme Profil pro Christele Rubneau
    Responsable de service informatique
    Inscrit en
    novembre 2009
    Messages
    1 351
    Détails du profil
    Informations personnelles :
    Nom : Femme Christele Rubneau
    Âge : 66
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : novembre 2009
    Messages : 1 351
    Points : 2 463
    Points
    2 463

    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
    Invité de passage
    Inscrit en
    décembre 2012
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : décembre 2012
    Messages : 7
    Points : 0
    Points
    0

    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
    Membre Expert
    Avatar de christele_r
    Femme Profil pro Christele Rubneau
    Responsable de service informatique
    Inscrit en
    novembre 2009
    Messages
    1 351
    Détails du profil
    Informations personnelles :
    Nom : Femme Christele Rubneau
    Âge : 66
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : novembre 2009
    Messages : 1 351
    Points : 2 463
    Points
    2 463

    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
    Invité de passage
    Inscrit en
    décembre 2012
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : décembre 2012
    Messages : 7
    Points : 0
    Points
    0

    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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •