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

JavaScript Discussion :

[AJAX] Arrêter une requete xhtmlrequest


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 88
    Par défaut [AJAX] Arrêter une requete xhtmlrequest
    Bonjour,

    J'ai cherché un peu partout et malheureusement je n'ai pas trouvé mon bonheur.
    Je voudrai stopper une requete si elle dépasse un délai de x secondes.

    j'ai testé la méthode abort() mais elle ne marche pas sur tous les navigateurs et ne m'affiche pas ce que je veux.

    Si quelqu'un a des infos sur ce sujet.
    Merci car là je suis bloqué.

  2. #2
    Membre expérimenté Avatar de Ikonic
    Inscrit en
    Février 2007
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 197
    Par défaut
    Salut,

    Je cherche aussi depuis un an...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 88
    Par défaut
    Citation Envoyé par Ikonic Voir le message
    Salut,

    Je cherche aussi depuis un an...
    ça me rassure pas ce que tu me dis la

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Bonjour,
    Citation Envoyé par watchabongo Voir le message
    j'ai testé la méthode abort() mais elle ne marche pas sur tous les navigateurs et ne m'affiche pas ce que je veux.
    peux-tu préciser (vu que ça devrait être la bonne méthode) ?
    Avec quel navigateur ne fonctionne-t-elle pas ?
    Comment l'utilises-tu ?
    Qu'est-ce que tu voudrais qu'elle t'affiche, si la requête est interrompue ?

    A+

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 88
    Par défaut
    Donc déjà voila mon code :

    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
    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
    <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, 10000);
     
     
    // on annule la requete après 10 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
    			xhr.abort();
    		}
    } 	
     
        }
     
        function alertContents(xhr) {
     
    		var content = document.getElementById('ShareContent');
     
    		if(xhr.readyState == 1){
    			content.innerHTML = '<img src="loading.gif">';
    		}
     
    		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>
    Ensuite voila les différentes choses que j'obtiens :
    Sur Firefox :
    erreur JS:
    [Exception... "Component returned failure code: 0x80040111 (NS_ERROR_NOT_AVAILABLE) [nsIXMLHttpRequest.status]" nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)" location: "JS frame :: http://url/tests/cours/vraicours.html :: alertContents :: line 64" data: no]
    [Break on this error] if (xhr.status == 200) {

    Sur IE 7 :
    affichage de ce message :
    Un problème est survenu avec la requête.

    Sur IE 6 :
    affichage de ce message :
    Un problème est survenu avec la requête.

    Pour Internet explorer, malheureusement je ne peux pas afficher pour savoir s'il y a des erreurs JS, mais bon ce n'est pas le message que je souhaite obtenir. Je souhaite avoir "Le serveur ne répond pas, il est trop lent".

  6. #6
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Tu fais appel à l'objet xhr dans plusieurs fonctions.
    Or il est déclaré en variable locale dans makeRequest(url) et ne doit donc être "visible" que dans cette fonction.
    As-tu essayé de passer en global ?

    Ca devrait résoudre certains des problèmes ...

    A+

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 88
    Par défaut
    C'est sûrement une bonne idée E.Bzz
    malheureusement je n'arrive pas à la mettre en pratique, j'essaye de passer xhr en paramètre, marche pas. Je ne vois pas trop comment la passer en paramètre.

    Si tu peux m'aider, merci d'avance.

  8. #8
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par watchabongo Voir le message
    C'est sûrement une bonne idée E.Bzz
    malheureusement je n'arrive pas à la mettre en pratique, j'essaye de passer xhr en paramètre, marche pas. Je ne vois pas trop comment la passer en paramètre.
    En globale, pas en paramètre.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <script type="text/javascript">
     
        var xhr = false;
     
        function makeRequest(url) {
     
            if (window.XMLHttpRequest) { // Mozilla, Safari,...
                xhr = new XMLHttpRequest();
    .....
    Comme elle est visible de partout, plus besoin de la passer en paramètre ...

    A+

Discussions similaires

  1. Réponses: 7
    Dernier message: 21/02/2015, 22h10
  2. [AJAX] Recharger une requete SQL via lien<a href>
    Par pinkdev dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 27/06/2007, 13h30
  3. [AJAX] Requete ajax sur une meme page php
    Par Bownobo dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 22/06/2007, 11h25
  4. [AJAX] deux requetes ajax dans une même page
    Par mitmit dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 02/05/2007, 12h52
  5. champs qui s'efface lors d'une requete ajax.
    Par starr dans le forum Langage
    Réponses: 3
    Dernier message: 27/10/2006, 08h33

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