我在python中用瓶子编写了一个代码,它从mongodb获取数据,当用户从瓶子请求url http://localhost:8080/index/test
时,它将从mongoDB返回json结果。当我将浏览器指向该URL时,它可以正常工作,我可以在浏览器上看到所有结果。
然而,当我尝试从jQuery ajax发送请求时,我总是收到错误,请求永远不会成功。
有没有人做过类似的人可以和我分享他们的方法?
我的一般问题是,当使用bottle作为服务器时,从客户端获取MongoDB数据的最佳方法是什么。我在Node.js中看到了一些例子,但我想用python作为服务器。
我使用过此代码。
$.ajax({
type: "POST",
url: "http://localhost:8080/hello/test",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
console.log("success");
},
error: function (response){
console.log("failed");
}
});*/
我也试过这个:
$.post( "http://localhost:8080/hello/test", d)
.done(function( response ) {
console.log("success");
});
任何这些都没有运气。我也试过GET而不是发帖,但没有运气。
这就是我在python方面的一点:
从瓶子进口路线,运行,模板
@route('/hello/<name>')
def index(name):
return {'status':'online', 'something':'blah blah'}
run(host='localhost', port=8080)
非常感谢提前。
答案 0 :(得分:2)
首先,'GET'是更好的选择,因为你没有将任何参数传递给你的数据库。
其次,您的应用程序在哪个端口上运行?您正在为您的请求添加8080,这使我可以假设您的应用程序在不同的端口下运行。 JS基于Same Origin Policy,这意味着如果您想从不同的URL(不同的端口=不同的URL)访问数据,它将不会为您提供任何响应数据。
要使这项工作要么确保python脚本直接将信息传递给您的应用程序,要么必须实现Cross Origin Ressource Sharing。 为此,您必须使用以下内容为python(端口8080)脚本的响应添加标头
Access-Control-Allow-Origin:localhost:XXXX //用您的应用程序端口替换XXXX
编辑: 如果您需要知道如何激活COR,请在stackoverflow上检查此线程: PY Bottle enable COR