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] Ajax -> XmlHttp.status == 0


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Février 2004
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 8
    Par défaut [AJAX] Ajax -> XmlHttp.status == 0
    Salut à tous,

    J'ai une page Main.aspx qui crée 2 objets XmlHttp :

    - un premier objet qui va transmettre le contenu d'un Textarea (dans lequel l'utilisateur peut coller une liste de noms de machines) à une page (Request.aspx) qui va parcourir AD pour trouver ces machines

    - un second objet, qui va régulièrement demander à Request.aspx de lui renvoyer le pourcentage de traitement accompli pour rafraichir un progressbar.

    Mon souci c'est que j'ai constamment mon status XmlHttp à 0, même quand j'interroge la page en vrai mode client/serveur (deux machines distinctes). Voici la partie javascript de la page Main.aspx :

    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
    79
    80
    81
    82
    83
    84
    85
    86
     
            <script type="text/javascript">
     
            // Create an array to hold the request objects
            var requestArray = new Array(); 
     
            // Au chargement de la page je positionne le curseur dans la zone de dépot de données
            function DoInit()
            {
                document.getElementById('depot').focus();        
            }
     
            function sendRequest(url,params,reqtype) 
            {
                // reqtype = 0 : transmission des valeurs
                // reqtype = 1 : demande de pourcentage
     
                if (typeof(requestArray[reqtype]) != 'undefined') // Objet déjà instancié, requête en cours
                {
                    requestArray[reqtype].xmlhttp.abort();
                }
     
                requestArray[reqtype] = new newRequest(); // Create new request by calling newRequest function
                requestArray[reqtype].xmlhttp.open("POST",url,true); // Send Request and wait for change
                requestArray[reqtype].xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
     
                // Execute function() when ready state changes
                requestArray[reqtype].xmlhttp.onreadystatechange = function() 
                {
                    if (requestArray[reqtype].xmlhttp.readyState == 4) 
                    {
                        if (requestArray[reqtype].xmlhttp.status == 200) 
                            { alert(requestArray[reqtype].xmlhttp.responseText); }
                        else 
                            { alert('Pas OK [' + reqtype + '] : status=' + requestArray[reqtype].xmlhttp.status); }
                    }
                }
                if (params!='')
                    { requestArray[reqtype].xmlhttp.send(params); }
                else
                    { requestArray[reqtype].xmlhttp.send(null); }
     
                if (reqtype==1)
                {
                    // Dans 5 secondes on demandera le pourcentage
                    setTimeout("GetPercentage()", 4000);                
                }
            }
     
            // Create a new request
            function newRequest() 
            {
    	        this.xmlhttp = false;
    	        if (window.XMLHttpRequest) // For non-IE browsers
    	        { 
    		        this.xmlhttp = new XMLHttpRequest();
    	        } 
    	        else if (window.ActiveXObject) // For IE
    	        { 
    		        this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    	        }
            }    
     
            function GetPercentage()
            {
                sendRequest('XmlHttp/Process.aspx','ipn=p026926&action=1',1);
            }
     
            function CheckAndSubmit()
            {
                if (document.getElementById('depot').value=="")
                {
                    alert("Please input data in the left field before running extraction");
                    document.getElementById('depot').focus();
                }   
                else
                {
                    var dep = document.getElementById('depot').value;
                    sendRequest('XmlHttp/Process.aspx','ipn=p026926&action=0&depot='+dep,0);
     
                    // Dans 5 secondes on demandera le pourcentage
                    setTimeout("GetPercentage()", 4000);                
                }
            }
     
            </script>
    En gros toutes les 4 secondes, je prends un msgbox qui contient :

    "Pas OK[1] : status = 0"

    Est-ce que mon problème vient du fait que j'interroge la même page depuis deux objets Ajax distincts ? Dois-je créer une page distincte pour la consultation du pourcentage ? Je suis perdu ...

    Si vous avez des pistes, je suis preneur ...

    Merci à tous,

    Olivier

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Février 2004
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 8
    Par défaut
    Alors en fait j'avais oublié de mettre les Response.Flush() côté Request.aspx ... donc maintenant ça fonctionne nickel ... à ceci prêt que les pourcentages ne me remontent qu'à partir de 30% environ mais c'est déjà un bon pas en avant !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. $.ajax() récupérer le status code
    Par WalidNat dans le forum jQuery
    Réponses: 1
    Dernier message: 15/01/2012, 20h18
  2. ajax est xhr.status=0
    Par sebxid dans le forum jQuery
    Réponses: 1
    Dernier message: 25/05/2011, 13h16
  3. [AJAX] Objet XMLHttpRequest, status ne retourne rien
    Par IanBussieres dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 06/03/2008, 10h54
  4. [AJAX] Connexion permanente status=100
    Par d-Rek dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 06/07/2007, 11h38
  5. [AJAX] AJAX - req.status == 200
    Par julien.63 dans le forum Général JavaScript
    Réponses: 19
    Dernier message: 10/05/2006, 15h59

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