Twisted.Web and AJAX 类似的线程已经退出。我甚至从那里拿了代码,但我有同样的问题,扭曲的服务器就像一个魅力,但无法弄清楚为什么我不能用ajax获取它。在类似的帖子中,他说警报出来了,但没有数据。对我来说,即使警报没有弹出,但是另一个ajax函数可以正常工作,所以一般来说ajax就是一切都好,但完全是拿出来的东西出错了。
正如在类似的线程中所说,我可以使用curl - $ curl --url http://localhost:8082/test -v
来获取它,并且它显示了hello world,因此服务器100%正常工作。
有什么想法吗?
<script type="text/javascript">
// Submit button
$(function(){
$.ajax({type: "POST",
$('a').click(function(){
url: "http://localhost:8082/test",
data: {},
success: function(data) {alert("Success:" + data);}
});
});
});
</script>
<html>
[...]
<a href="#">Load Favorites Movies</a>...
[...]
</html>
server.py
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()
非常感谢 Peter Le Bek 和 Darkporter 。 Peter Le Bek asnwer标记为正确,Darkporter投票赞成=)。
答案:彼得的答案开箱即用,只是让我感到困惑的是线条,你必须指定静态文件夹。这很简单......只需在那里分配任何文件夹,将index.html放在那里,当你在网上访问它时,它将是一个根目录。
答案 0 :(得分:5)
你的javascript被破坏了,试试这个:
<强> wwwdir / index.html中强>
<html>
<head>
<script src="http://code.jquery.com/jquery-1.5.2.min.js"></script>
</head>
<body>
<a href="#">click me</a>
<script type="text/javascript">
$('a').click(function(){
$.ajax({type: "POST",
url: "http://localhost:8082/test",
data: {},
success: function(data) { alert("Success: " + data); }
});
});
</script>
</body>
</html>
您可能仍然会遇到darkporter提到的cross-domain HTTP request restriction,要解决此问题,请使用相同的Twisted服务器为您的网页提供服务:
<强> server.py 强>
from twisted.web import server, resource, http, static
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
root = static.File('/path/to/wwwdir')
testHandler = TestHandler()
root.putChild('test', testHandler)
reactor.listenTCP(8082, server.Site(root))
reactor.run()
答案 1 :(得分:4)
您的JavaScript所使用的页面是否来自同一主机和端口?如果不是,您将遇到跨域问题。