如何使用javascript / jQuery从客户端获取MongoDB的数据

时间:2014-04-17 08:51:59

标签: javascript jquery mongodb bottle

我在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) 

非常感谢提前。

1 个答案:

答案 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