Précédent   Forum du club des développeurs et IT Pro > Webmasters - Développement Web > AJAX
AJAX Forum sur la programmation AJAX. Avant de poster : Cours AJAX, FAQ AJAX, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 16/12/2012, 11h10   #1
Dazing
Invité de passage
 
Inscription : 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é?
Dazing est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2012, 11h28   #2
christele_r
Membre Expert
 
Avatar de christele_r
 
Femme Christele Rubneau
Inscription : novembre 2009
Messages : 1 052
Détails du profil
Informations personnelles :
Nom : Femme Christele Rubneau
Âge : 40
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2009
Messages : 1 052
Points : 1 428
Points : 1 428
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
christele_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2012, 12h43   #3
Dazing
Invité de passage
 
Inscription : décembre 2012
Messages : 7
Détails du profil
Informations forums :
Inscription : décembre 2012
Messages : 7
Points : 0
Points : 0
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.
Dazing est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2012, 13h13   #4
christele_r
Membre Expert
 
Avatar de christele_r
 
Femme Christele Rubneau
Inscription : novembre 2009
Messages : 1 052
Détails du profil
Informations personnelles :
Nom : Femme Christele Rubneau
Âge : 40
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2009
Messages : 1 052
Points : 1 428
Points : 1 428
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
christele_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2012, 13h36   #5
Dazing
Invité de passage
 
Inscription : décembre 2012
Messages : 7
Détails du profil
Informations forums :
Inscription : décembre 2012
Messages : 7
Points : 0
Points : 0
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?
Dazing est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2012, 13h46   #6
christele_r
Membre Expert
 
Avatar de christele_r
 
Femme Christele Rubneau
Inscription : novembre 2009
Messages : 1 052
Détails du profil
Informations personnelles :
Nom : Femme Christele Rubneau
Âge : 40
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2009
Messages : 1 052
Points : 1 428
Points : 1 428
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='';
christele_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2012, 14h08   #7
Dazing
Invité de passage
 
Inscription : décembre 2012
Messages : 7
Détails du profil
Informations forums :
Inscription : décembre 2012
Messages : 7
Points : 0
Points : 0
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.
Dazing est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2012, 14h31   #8
Bovino
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 18 075
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 42
Localisation : France, Gironde (Aquitaine)

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

Informations forums :
Inscription : juin 2008
Messages : 18 075
Points : 64 522
Points : 64 522
Je ne suis vraiment pas sûr que tu comprennes bien ce que tu fais...
Citation:
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.
Citation:
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 !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, 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
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2012, 15h16   #9
Dazing
Invité de passage
 
Inscription : décembre 2012
Messages : 7
Détails du profil
Informations forums :
Inscription : décembre 2012
Messages : 7
Points : 0
Points : 0
L'élèment <div> comme m'a proposé de faire Cristele
Dazing est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2012, 15h26   #10
christele_r
Membre Expert
 
Avatar de christele_r
 
Femme Christele Rubneau
Inscription : novembre 2009
Messages : 1 052
Détails du profil
Informations personnelles :
Nom : Femme Christele Rubneau
Âge : 40
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2009
Messages : 1 052
Points : 1 428
Points : 1 428
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
christele_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2012, 17h40   #11
Dazing
Invité de passage
 
Inscription : décembre 2012
Messages : 7
Détails du profil
Informations forums :
Inscription : décembre 2012
Messages : 7
Points : 0
Points : 0
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.
Dazing est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2012, 01h24   #12
christele_r
Membre Expert
 
Avatar de christele_r
 
Femme Christele Rubneau
Inscription : novembre 2009
Messages : 1 052
Détails du profil
Informations personnelles :
Nom : Femme Christele Rubneau
Âge : 40
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2009
Messages : 1 052
Points : 1 428
Points : 1 428
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
christele_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2012, 09h39   #13
Dazing
Invité de passage
 
Inscription : décembre 2012
Messages : 7
Détails du profil
Informations forums :
Inscription : décembre 2012
Messages : 7
Points : 0
Points : 0
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
Dazing est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 03h29.


 
 
 
 
Partenaires

Hébergement Web