1

我正在尝试从在 mongolab 上运行的 mongodb 数据库加载数据。该文档非常好,但奇怪的是如何有 PUT 和 POST 的示例,但没有关于 GET 的内容:

https://support.mongolab.com/entries/20433053-REST-API-for-MongoDB

谁能告诉我如何使用 REST 将数据加载到对象?假设 url 中的查询将始终返回单个文档或没有文档。

我想它是这样的:

  $scope.getDocument = function() {
    // alert("called");
    $.ajax( { url: "MY QUERY",
     data:  //????????
     type: "GET",
     contentType: "application/json" } );
  };

有人可以指导我吗?

编辑:我现在有了这个,它有点工作,但显然我的回报是“[object Object]” - 如何从中获取有意义的数据?

$scope.getDocument = function() {
  $.ajax( { url: "MY QUERY",
  type: "GET",
  success: function(data){
         alert(data);
       }
     }
     );
  };

EDIT2:现在我有了这个,但由于某种原因我无法从 JSON 中提取字段:

  $scope.getDocument = function() {
    // alert("called");
    $.ajax( { url: "MY QUERY",
     type: "GET",
     dataType: 'json',
     success: function(data){
         $scope.userId=data.userid; // THIS DOES NOT WORK
         $scope.foo=true; // THIS DOES

       }
     }
 );
 };
4

2 回答 2

1

GET 请求不会向服务器发送数据,这就是data忽略 ajax 调用设置字段的原因。

警报消息给您,[object Object]因为那toStringObject. 如果您想查看服务器返回的内容,请使用 use console.log(data),如果服务器返回 JSON,您将在开发控制台上看到它。

此外,如果您使用任何 Web 开发工具(如 Chrome/Firefox/Safari 的开发者控制台),您可以检查您的 JavaScript 代码正在执行的网络调用,这样您就可以看到您收到的请求和响应的详细信息。

如果您不知道如何打开开发者控制台,请在 Chrome 上:单击菜单按钮 -> 工具 -> 开发者工具。然后在开发人员工具窗口中转到网络选项卡并重新加载您的页面以查看请求。

顺便说一句:要在“网络”选项卡中仅查看 AJAX 调用,请使用底部的 XHR 过滤器(这意味着 XMLHttpRequest 是用于执行 ajax 调用的对象)。如果您使用 Firefox+Firebug,步骤类似。如果你使用 IE .. 你也有一个开发控制台,但至少在 IE8 中太简陋了,所以最好使用一些 webkit 浏览器或 firefox。

于 2013-06-01T16:43:25.043 回答
0

是的,它可能与您的代码非常相似。您应该添加成功回调来管理响应:

$.ajax({
 url: 'your url',
 type: 'get',
 // you can use data to include url path parameters. For example:
 // data: {pageIndex: 1, pageSize: 5},
 contentType: 'application/json',
 // This is the key
 success: function(data, response, xhr){
   // data variable should contain your info. You can inspect the fields:
   console.log(JSON.stringify(data));
 }
});

有关回调参数的更多信息,您可以查看

于 2013-06-01T16:39:45.710 回答