繁体   English   中英

如何使用 python HTTPServer 返回 ajax 响应?

[英]How to return ajax Response with python HTTPServer?

我在 python 中创建了一个示例 http 服务器,并尝试将其与 ajax 发布方法连接。 当客户端开始发帖时,我得到了connection ajax from:...登录我的服务器,然后是send_response(200) ,但在我的客户端部分,总是出现错误和响应 ['status'] = 0,请帮助我,很感谢!

HTTPServer 部分: (python)

class ajax_server(BaseHTTPRequestHandler):
    def do_POST(self):
        print('connection ajax from:', self.address_string())
        data={"data":"test"}
        json_string = json.dumps(data)
        self.send_response(200)
        self.send_header(
            'Content-type',
            'application/json'
        )
        self.end_headers()
        self.wfile.write(json_string.encode(encoding='utf-8'))
server = ThreadedHTTPServer("my server ip", ajax_server)
server.serve_forever()

客户端部分: (javascript)

    $(document).ready(function () {
        update_ajax();
        function update_ajax() {    
            $.ajax({
                url: "my server url",
                type: 'POST',
                success: function (response) {
                    alert(response["status"]);
                },
                error: function (response) {
                    alert(response['status']);
                }
            })
            //setTimeout(update_ajax, 1000);
        }  
    });

更新:

  1. 此服务器可以通过 json 数据到 chrome 浏览器
  2. 此客户端适用于 django JsonResponse return (response['status'] = 200)

我必须忽略一些错误来创建 ajax 响应,就像 django 一样。

最后,我发现在 header 中添加Access-Control就可以了~

def do_POST(self):
    print('connection ajax from:', self.address_string())
    data={"data":"test","status":200}
    json_string = json.dumps(data)
    self.send_response(200)
    self.send_header("Content-type", "application/json") 
    self.send_header("Access-Control-Allow-Origin", "*") 
    self.send_header("Access-Control-Expose-Headers", "Access-Control-Allow-Origin") 
    self.send_header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept") 
    self.end_headers() 
    self.wfile.write(json_string.encode(encoding='utf-8'))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM