我最近尝试根据this实现SimpleHTTPRequestHandler来接受AJAX请求。
虽然一切似乎都能从客户端接收请求,但是当我尝试self.wfile.write(" foo")时,我无法向客户端发送任何内容,我得到了一个回复客户;但是,XmlObject的响应文本是完全空白的!?!
如果有人能说清楚这一点,那就太棒了!
编辑:我认为我的AJAX调用结构正确,因为我收到了Python的响应(我已经在调试模式下检查过);但是,当我收到一个对象时,我没有收到任何消息回复。
答案 0 :(得分:9)
确保您的回复包含内容类型的 send_header()。没有这个,我看到AJAX请求混淆了。您也可以尝试将POST切换到GET进行调试,并确保浏览器可以看到内容。
如果您将查询或浏览器指向 127.0.0.1/test ,这是一个简单的HTTP示例,用于返回XML:
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()