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] readyState bloque à 3


Sujet :

JavaScript

  1. #1
    Membre régulier
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2006
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 49
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 114
    Points : 101
    Points
    101
    Par défaut [AJAX] readyState bloque à 3
    Bonjour,
    Je développe un serveur http basique. Pour tester je fais une requête XMLHttpRequest. La requête ne passe jamais par l'état "4" (loaded) mais ça s'arrête à 3.
    Avez vous une idée concernant l'erreur potentielle ?

  2. #2
    Expert éminent sénior

    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
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    Citation Envoyé par cocoyot Voir le message
    Avez vous une idée concernant l'erreur potentielle ?
    sans ton script : aucune !!

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  3. #3
    Membre régulier
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2006
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 49
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 114
    Points : 101
    Points
    101
    Par défaut
    Le problème n'est pas le script ajax qui fonctionne très bien, c'est le serveur. Je n'ai pas mis de script, j'avais penser que quelque soit l'erreur et la techno du serveur, c'était une erreur classique. Mais bon voilà ...
    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
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
     
    #!/usr/bin/python
     
     
    import time
    import os
    import BaseHTTPServer
    import urlparse
    import pickle
    import urllib
     
    HOST_NAME = '0.0.0.0' 
    PORT_NUMBER = 8000 
    VLM_PORT=9000 # change this according to your vlm setting.
     
     
     
    try:
        storage = pickle.load(open('emul.data'))
    except IOError:
        storage = {}
     
     
     
    class MyHandler(BaseHTTPServer.BaseHTTPRequestHandler):
        def do_GET(self):
            """Respond to a GET request."""
            self.send_response(200)
            self.send_header("Content-type", "text/plain")
            self.end_headers()
            try:
                self._parse()
            except Exception,ex:
                self.wfile.write("Error: %s\n" %   type(ex))
                self.wfile.write("     : %s\n" %  ex.message)
     
     
     
     
        def _parse(self):
            url = urlparse.urlparse(self.path)
            params = dict([part.split('=') for part in url[4].split('&')])
     
            if params['class']=='Storage':
     
                if params['action'] == 'put':
                    storage.update({params['name']:params['content']})
                    self.wfile.write('ok')
     
                if params['action'] == 'list':
                    for k in storage.keys():
                        self.wfile.write('%s=%s\n'% (k,storage[k]))
     
                if params['action'] == 'get':
                    self.wfile.write(storage[params['name']])
    		self.wfile.write('\n')
     
                if params['action'] == 'delete':
                    try:
                        storage.pop(params['name'])
                        self.wfile.write('ok')
                    except KeyError:
                        self.wfile.write('unknow key %s' %  params['name'])
     
     
            if params['class'] =='Media':
                if params['action'] == 'play':
                    source = params['source']
                    cmd='/requests/status.xml?command=in_play&input=%s' % source
                    self._sendVLC(cmd)
     
                if params['action'] == 'pause':
                    cmd='/requests/status.xml?command=pl_pause'
                    self._sendVLC(cmd)
     
                if params['action'] == 'stop':
                    cmd='/requests/status.xml?command=pl_stop'
                    self._sendVLC(cmd)
     
     
     
        def _sendVLC(self,cmd):
            dest_url='http://localhost:%s%s' % (VLM_PORT,cmd)
            try:
                z = urllib.urlretrieve(dest_url)
            except IOError:
                print "Please check that VLM is running on port %s" % VLM_PORT
            else:
                self.wfile.write('ok')
     
     
     
     
    if __name__ == '__main__':
        server_class = BaseHTTPServer.HTTPServer
        httpd = server_class((HOST_NAME, PORT_NUMBER), MyHandler)
        print time.asctime(), "Server Starts - %s:%s" % (HOST_NAME, PORT_NUMBER)
        try:
            httpd.serve_forever()
        except KeyboardInterrupt:
            pass
        output = open('emul.data', 'wb')
        pickle.dump(storage, output)
     
        httpd.server_close()
        print time.asctime(), "Server Stops - %s:%s" % (HOST_NAME, PORT_NUMBER)

  4. #4
    Membre régulier
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2006
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 49
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 114
    Points : 101
    Points
    101
    Par défaut
    Il s'agit d'un problème de "Content-Length", mon serveur http ne met pas ce header dans la réponse, du coup impossible de savoir quand la réponse est "complete" côté navigateur.
    Merci quand même !

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

Discussions similaires

  1. [AJAX] Ajax : readyState bloqué à 1
    Par nynnie7 dans le forum AJAX
    Réponses: 3
    Dernier message: 06/02/2011, 13h46
  2. Réponses: 8
    Dernier message: 19/05/2009, 17h04
  3. [AJAX] readyState bloque à 1
    Par dubitoph dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 11/09/2008, 09h39
  4. [AJAX] readyState
    Par helpcomm dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 22/12/2007, 08h00
  5. [AJAX] readyState passe de 1 à 4 : Probleme Connu ?
    Par raoulchatigre dans le forum Général JavaScript
    Réponses: 24
    Dernier message: 29/08/2006, 12h39

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