2010-07-30 4 views
1

J'ai un simple serveur tornade en cours d'exécution comme ceci:serveur tornade réponse ne revient pas avec self.write

import json 
import suds 
from suds.client import Client 
import tornado.httpserver 
import tornado.ioloop 
import tornado.web 
class MainHandler(tornado.web.RequestHandler): 

    def get(self): 
     url = "http://xx.xxx.xx.xxx/Service.asmx?WSDL" 
     client = Client(url) 
     resultCount = client.service.MyMethod() 
     self.write(json.dumps({'result_count':resultCount})) 

application = tornado.web.Application([ 
    (r"/", MainHandler), 
]) 

if __name__ == "__main__": 
    http_server = tornado.httpserver.HTTPServer(application) 
    http_server.listen(6969) 
    tornado.ioloop.IOLoop.instance().start() 

Maintenant, j'ai une fonction jquery qui appelle ce code tornade comme ceci:

$.get("http://localhost:6969", 
      function(data){ 
       alert(data); 
       $('#article-counter').empty().append(data).show(); 
      }); 

Pour la vie de moi, je ne comprends pas pourquoi les données (la réponse) est vide. Même firebug montre une réponse vide (le statut http est de 200). Quelqu'un at-il une idée ??

Répondre

4

J'ai finalement compris ce qui n'allait pas: mon application ne suivait pas la politique 'même domaine d'origine'. Ainsi, lorsque la requête ajax a été envoyée, l'en-tête référent provenait d'un port différent de celui de mon serveur tornado. Naturellement le serveur n'a pas retourné de réponse!

Questions connexes