我正在尝试从在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" } );
};
有人能引导我吗?
编辑:我现在有了这个并且它有点工作,但显然我的回归是“[对象]” - 如何从中获取有意义的数据?
$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
}
}
);
};
答案 0 :(得分:1)
GET请求不会向服务器发送数据,这就是为什么忽略了ajax调用设置的data
字段。
警告消息为您提供[object Object]
,因为这是toString
的标准Object
实施。如果要查看服务器返回的内容使用console.log(data)
,如果服务器返回了JSON,您将在开发控制台上看到它。
此外,如果您使用任何网络开发工具(例如Chrome / Firefox / Safari的开发者控制台),您可以检查您的JavaScript代码正在执行的网络调用,这样您就可以看到请求和响应的详细信息越来越好了。
如果您不知道如何在Chrome上打开开发者控制台:点击菜单按钮 - >工具 - >开发者工具。然后在开发人员工具窗口中转到“网络”选项卡,然后重新加载页面以查看请求。
BTW:要在网络选项卡中仅查看AJAX调用,请使用底部的XHR过滤器(这意味着XMLHttpRequest是用于执行ajax调用的对象)。如果您使用Firefox + Firebug,则步骤类似。如果你使用IE ..你也有一个开发控制台,但至少在IE8中太初级了,所以最好使用一些webkit浏览器或firefox。答案 1 :(得分: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));
}
});
有关回调参数的详细信息,您可以查看this