Twisted.Web 和 AJAX

2 投票
2 回答
2001 浏览
提问于 2025-04-16 02:11

我在Twisted.Web里做了一个简单的网络服务:

from twisted.web import server, resource, http

class RootResource(resource.Resource):
    def __init__(self):
        resource.Resource.__init__(self)
        self.putChild('test', TestHandler())

class TestHandler(resource.Resource):
    isLeaf = True

    def __init__(self):
        resource.Resource.__init__(self)
    def render_GET(self, request):
        return self.render_POST(request)
    def render_POST(self, request):
        return "hello world!"

if __name__ == "__main__":
    import sys
    from twisted.internet import reactor
    reactor.listenTCP(8082, server.Site(RootResource()))
    reactor.run()

根据curl的测试,它运行得很好:

$ curl --url http://localhost:8082/test -v
[..]
< HTTP/1.1 200 OK
< Date: Mon, 02 Aug 2010 11:54:35 GMT
< Content-Length: 13
< Content-Type: text/html
< Server: TwistedWeb/8.2.0
< 
hello world!

现在,我想用JQuery提供的AJAX方法来调用这个服务。 下面是对应的JavaScript代码:

[..]
// Submit button
$("#submit").click(function(e){
    $.ajax({type: "POST", 
            url: "http://localhost:8082/test",
            data: {},
            success: function(data) {
              alert("Success:" + data);                  
            }
    });
});
[..]

虽然success这个回调函数被调用了,但data的值却是null。有人知道这是为什么吗?

谢谢, 彼得

2 个回答

0

数据类型很重要。如果你使用数据类型:'jsonp',那么你需要从服务器端发送一个回调。我觉得正因为这个原因,它在curl中能工作,但在你的浏览器中却不行。

2

我无法重现这个问题。我使用了你的服务器和你提供的ajax调用,结果一切正常。弹出的提示框显示了“成功:你好,世界!”和预期的一样。你可能还有其他地方出了问题。

撰写回答