9

私は最近、 this に従って AJAX リクエストを受け入れるように SimpleHTTPRequestHandler を実装しようとしまし

クライアントからのリクエストを受信する限り、すべてが機能しているように見えますが、クライアントに何も送り返すことができません。ただし、XmlObject からの応答テキストは完全に空白です!?!

誰かがこれに光を当てることができれば、それは素晴らしいことです!

編集: Python から応答を取得しているため、AJAX 呼び出しは正しく構造化されていると思います (デバッグ モードで確認しました)。ただし、オブジェクトを取得しても、responseText にメッセージが返されません。

4

1 に答える 1

10

応答にコンテンツ タイプのsend_header()があることを確認してください。これがないと AJAX リクエストが混乱するのを見てきました。また、デバッグのために POST を GET に切り替えて、ブラウザーがコンテンツを表示できることを確認することもできます。

以下は、クエリまたはブラウザで127.0.0.1/testを指定した場合に XML を返す簡単な HTTP の例です。

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()
于 2012-08-02T01:49:07.283 に答える