2012-07-31 1 views
9

최근에 this에 따라 AJAX 요청을 수락하기 위해 SimpleHTTPRequestHandler를 구현하려고 시도했습니다.문제가있는 경우 AJAX에 응답하는 SimpleHTTPRequestHandler 가져 오기

모든 것이 클라이언트에서 요청을받는 것처럼 보이지만 self.wfile.write ("foo")를 시도하면 아무 것도 클라이언트로 보낼 수 없습니다. 고객; 그러나 XmlObject의 응답 텍스트는 완전히 비어 있습니다.

아무도이 문제에 관해 밝힐 수 없다면 멋질 것입니다.

편집 : 파이썬 (내가 디버그 모드에서 확인한)에서 응답을 받기 때문에 내 AJAX 호출이 올바르게 구조화되었다고 생각합니다. 그러나, 나는 어떤 메시지를 다시받지 못한다.

답변

9

콘텐츠 유형이 인 send_header()인지 확인하십시오. 나는 AJAX 요청이 이것없이 혼란스럽게 보았다. 디버깅을 위해 POST를 GET으로 전환하고 브라우저가 내용을 볼 수 있는지 확인할 수도 있습니다.

import SimpleHTTPServer, SocketServer 
import urlparse 

PORT = 80 

class MyHandler(SimpleHTTPServer.SimpleHTTPRequestHandler): 
    def do_GET(self): 

     # Parse query data & params to find out what was passed 
     parsedParams = urlparse.urlparse(self.path) 
     queryParsed = urlparse.parse_qs(parsedParams.query) 

     # request is either for a file to be served up or our test 
     if parsedParams.path == "/test": 
      self.processMyRequest(queryParsed) 
     else: 
      # Default to serve up a local file 
      SimpleHTTPServer.SimpleHTTPRequestHandler.do_GET(self); 

    def processMyRequest(self, query): 

     self.send_response(200) 
     self.send_header('Content-Type', 'application/xml') 
     self.end_headers() 

     self.wfile.write("<?xml version='1.0'?>"); 
     self.wfile.write("<sample>Some XML</sample>"); 
     self.wfile.close(); 

Handler = MyHandler 

httpd = SocketServer.TCPServer(("", PORT), Handler) 

print "serving at port", PORT 
httpd.serve_forever() 
: 여기

127.0.0.1/test에 쿼리 또는 브라우저를 경우 XML을 반환하는 간단한 HTTP의 예입니다