Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/05/2011, 10h49   #1
Membre habitué
 
Étudiant
Inscription : avril 2005
Messages : 258
Détails du profil
Informations personnelles :
Âge : 29

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2005
Messages : 258
Points : 127
Points : 127
Par défaut setInterval et AJAX

Bonjour,

j'ai un code php qui permet de créer des archives de fichiers. J'aimerai donc permettre à l'utilisateur d'attendre sur la page de création le temps que l'archive se crée.
Pour ceci je voudrais utiliser la fonction setInterval qui fait des requettes AJAX regulierement pour savoir si le job de création est terminé.
Dans l'ideal je voudrai faire quelque chose comme ça :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
function is_download_file_ready () {
    $.ajax({
        url: url_val,
        success: function(val, status, xhr) {
             if (val == "fini") {
                 // stop mon setInterval
             } else {
                 // Je continue d'afficher mon wait
             }
        }
    });
}
 
var x = setInterval(is_download_file_ready, 1000);
mais je ne sais pas si c'est la bonne méthode ?
suckthewindow est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2011, 11h30   #2
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 5 128
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 5 128
Points : 7 270
Points : 7 270
Bonjour,

clearInterval(x); permet de stoper l'appel périodique. Je te conseilles d'utiliser une fonction récursive dans ton cas parce qu'une requête pourra être lancer sans que la précédente sois terminé avec ton code.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function is_download_file_ready () {
    $.ajax({
        url: url_val,
        success: function(val, status, xhr) {
             if (val == "fini") {
                 // stop mon setInterval
             } else {
                 // Je continue d'afficher mon wait
                 setTimeout(function(){is_download_file_ready()},1000) ;
             }
        }
    });
}
is_download_file_ready ();
A+.
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2011, 12h38   #3
Expert Confirmé
 
Avatar de javatwister
 
Homme
danseur
Inscription : août 2003
Messages : 2 667
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : danseur

Informations forums :
Inscription : août 2003
Messages : 2 667
Points : 3 035
Points : 3 035
en général, il suffit de mettre un mouchard sur le retour serveur qui change le message "attendez" en "allez-y";
une boucle me paraît vraiment délirante dans ce cas;
__________________
On ne mord pas, on manifeste seulement notre tristesse face à des exposés de situations qui défient notre entendement binaire.
javatwister est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2011, 12h46   #4
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 5 128
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 5 128
Points : 7 270
Points : 7 270
Citation:
Envoyé par javatwister Voir le message
en général, il suffit de mettre un mouchard sur le retour serveur qui change le message "attendez" en "allez-y";
C'est ce qu'il fait
Citation:
if (val == "fini")
Citation:
Envoyé par javatwister Voir le message
une boucle me paraît vraiment délirante dans ce cas;
Moi, je ne vois pas d'autre solution. Et pourquoi c'est délirant?

A+.
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2011, 12h59   #5
Expert Confirmé
 
Avatar de javatwister
 
Homme
danseur
Inscription : août 2003
Messages : 2 667
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : danseur

Informations forums :
Inscription : août 2003
Messages : 2 667
Points : 3 035
Points : 3 035
le readyState et une condition sur responseText m'ont toujours donné satisfaction
__________________
On ne mord pas, on manifeste seulement notre tristesse face à des exposés de situations qui défient notre entendement binaire.
javatwister est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2011, 13h19   #6
Membre Expert
 
Avatar de Watilin
 
Homme Matilin Torre
Étudiant
Inscription : juin 2010
Messages : 679
Détails du profil
Informations personnelles :
Nom : Homme Matilin Torre
Âge : 23
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2010
Messages : 679
Points : 1 202
Points : 1 202
Oui mais là on ne parle pas de la latence de la requête, mais du temps de traitement de la routine d'archivage, côté serveur.
__________________
Disposition de clavier ergonomique française : Bépo
Watilin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2011, 23h22   #7
Membre habitué
 
Étudiant
Inscription : avril 2005
Messages : 258
Détails du profil
Informations personnelles :
Âge : 29

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2005
Messages : 258
Points : 127
Points : 127
Bonjour,

c'est tout à fait ce que je voulais !!!
D'ailleurs autre question, je souhaiterai me passer de l'archivage des fichiers qui peut prendre du temps. Est-il possible de permettre le telechargement de plusieurs fichiers avec 1 seul clic de l'utilisateur ?

merci de vos réponses
suckthewindow est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h59.


 
 
 
 
Partenaires

Hébergement Web