【发布时间】:2014-01-23 06:57:35
【问题描述】:
使用 resource.get() 我得到这个错误:
“资源配置错误。预期响应包含一个对象但得到一个数组”。
如果我将资源配置为期望一个数组,我会得到这个:
“资源配置错误。预期响应包含一个数组但得到一个对象”
如果我转储 Advanced Rest Client 的响应,我会返回以下内容:
{
"Note": {
"id": "1",
"clas": "test",
"obj_id": null,
"note": "test"
}
}
这对我来说就像一个对象。奇怪的是该页面仍然可以正常工作。但是我在控制台中得到了那个错误。
工厂:
angular.module('app').factory('Notes', function($resource) {
var notes = $resource('/index.php/notes/:id.json');
return {
get: function(id, success) { notes.get({id:id}, function(resp) { success(resp.Note); }); },
query: function() { return notes.query(); }
}
});
控制器
angular.module('app').controller('NotesCtrl',
function($scope, $stateParams, $state, $location, Notes) {
Notes.get($stateParams.id,
function(note) {
$scope.note = note;
},
function(note) {
console.log('error');
console.log(note);
}
);
});
该资源是使用 CakePHP 构建的,这是 bake 为您制作的正在序列化的 vanilla 视图函数。
【问题讨论】:
-
如果我们能看到一个plunker会更容易。在此之前,什么可能完全不在墙上,但我想我还是会问:你能改变你的 json 中的标签吗?在解析 json 时,“note”的重复是否有可能导致混淆?
-
我不知道如何欺骗 plunker 的 api 调用。不过我可以用代码更新。
-
哦,php。这是欺骗 api 的最简单方法:plnkr.co/edit/46V2g8rlrwlrAxsZ81dX?p=preview。只需创建另一个将 json 放在范围内的控制器,然后在其上运行工厂。 (替代方法是创建一个静态 json 文件并调用它。)这将让您检查是否是 json 本身触发了错误,如果不是,至少将其从罪魁祸首列表中剔除。
-
这是个好主意。我尝试了静态 json 的想法,它工作得很好。我还尝试了一个全新的 Cake 安装,它只剩下我想要的一个对象,而且效果也很好。我认为我的蛋糕安装有问题。
-
是的,我以前从 php 那里得到过那种疯狂。我不确定我会说它本身就是蛋糕。这可能更多是因为 php 本身不会说 json,所以它很容易弄乱它,然后 angular throws 适合。祝你好运!
标签: angularjs angularjs-resource