Précédent   Forum des professionnels en informatique > 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 Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/01/2008, 17h39   #1
Candidat au titre de Membre du Club
 
Inscription : novembre 2007
Messages : 88
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 88
Points : 14
Points : 14
Par défaut settimeout annuler requete

Bonjour,
J'ai un problème quand ma requete est trop longue.
Je voudrai que si la requette n'a pas été effectuée en 5 secondes, on stop la requette et on affiche un message.

Erreur firefox :
[Exception... "Component returned failure code: 0x80040111 (NS_ERROR_NOT_AVAILABLE) [nsIXMLHttpRequest.status]" nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)" location: "JS frame :: http://url :: alertContents :: line 61" data: no]
[Break on this error] if (xhr.status == 200) {

fichier ajax
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<script type="text/javascript">
 
    function makeRequest(url) {
 
        var xhr = false;
 
        if (window.XMLHttpRequest) { // Mozilla, Safari,...
            xhr = new XMLHttpRequest();
            if (xhr.overrideMimeType) {
                xhr.overrideMimeType('text/xml');
                // Voir la note ci-dessous à propos de cette ligne
            }
        }
        else if (window.ActiveXObject) { // IE
            try {
                xhr = new ActiveXObject("Msxml2.XMLHTTP");
            }
            catch (e) {
                try {
                    xhr = new ActiveXObject("Microsoft.XMLHTTP");
                }
                catch (e) {}
            }
        }
 
        if (!xhr) {
            alert('Abandon :( Impossible de créer une instance XMLHTTP');
            return false;
        }
 
        xhr.onreadystatechange = function() { alertContents(xhr); };
        xhr.open('GET', url, true);
		xhr.send(null);
		//setTimeout ( "abortRequest('xhr')", 5000);.
		setTimeout(abortRequest, 5000);
 
// on annule la requete après 5 secondes
function abortRequest() {
		var content = document.getElementById('ShareContent');
 
		//si la requete n'est pas terminée
		if (xhr.readyState != 4) {
			//on affiche le message d'erreur
			content.innerHTML = 'Le serveur ne répond pas, il est trop lent';  
			//on crash la requete
			var i = 0;
			xhr.abort();
		}
} 	
 
 
    }
 
    function alertContents(xhr) {
		var content = document.getElementById('ShareContent');
		if(xhr.readyState == 1){
			content.innerHTML = '<img src="loading.gif">';
			//alert('pause');
			//alert(xhr.readyState);
		}
 
		if (xhr.readyState == 4) {
            if (xhr.status == 200) {
               content.innerHTML = xhr.responseText;
            } 
			else if (xhr.status == 404) {
				content.innerHTML = 'Le fichier n\'existe pas.';
			}
			else if (xhr.status == 500) {
				content.innerHTML = 'Erreur interne du serveur.';
			}
			else {
				content.innerHTML = 'Un problème est survenu avec la requête.';
			}
        }
 
    }
 
 
</script>
<body onLoad="makeRequest('vraicours2.js');">
<p class="access"><em>Texte</em></p>
<div id="ShareCadre">
<div id="ShareContent"></div>
</div>
<input type="submit" value="fichier lent test" onClick="makeRequest('vraicours2lent.asp');">
<input type="submit" value="fichier test normal" onClick="makeRequest('vraicours2.js');">
</body>
fichier js
fichier asp qui est lent
Code :
1
2
3
4
5
6
<% 
maintenant = now()
while dateadd("s", 10, maintenant) > now()
wend
response.write "10 secondes plus tard"
%>
watchabongo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2008, 08h00   #2
Candidat au titre de Membre du Club
 
Inscription : novembre 2007
Messages : 88
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 88
Points : 14
Points : 14
Personne ne peut m'aider sur mon souci ?
watchabongo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2008, 18h06   #3
Invité de passage
 
Inscription : février 2008
Messages : 2
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2
Points : 2
Points : 2
Par défaut Petit Lien

J'ai peut-être trouvé la réponse à ta question. J'ai moi aussi le même problème sauf que j'ai mis 'false' dans les propriétés du open. Résultat : le navigateur plante jusqu'à ce que le serveur apache réponde....
J'ai trouvé ce lien, c'est en anglais mais le code est clair.
http://www.ibm.com/developerworks/xm...-aj-async.html
Regarde le premier cadre de code. Je vais essayer de le mettre en place, je te dirai si ça marche pour moi.
Azathot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2008, 09h40   #4
Invité de passage
 
Inscription : février 2008
Messages : 2
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2
Points : 2
Points : 2
Voilà,
J'ai utilisé ce qui était donné dans mon lien et ca marche nickel. Si tu as besoin d'aide pour le mettre en place, contacte-moi en message privés.
Avant j'utilisais une fonction AJAX repiquée plutôt.... minimaliste... Mais celle-ci est particulièrement efficace.
Azathot 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 13h19.


 
 
 
 
Partenaires

Hébergement Web