Twisted.Web 和 AJAX
我在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调用,结果一切正常。弹出的提示框显示了“成功:你好,世界!”和预期的一样。你可能还有其他地方出了问题。