我按照控制台获取JSON,但我一直收到此错误,
Assertion failed: Your server returned a hash with the key 0 but you have no mapping for it
和这个错误,
TypeError {} "Cannot call method 'toString' of undefined"
这是一个示例JSON响应,
[{"id":"1","last_name":"Solow","first_name":"Jeanne","suffix":null,"expiration":"2013-11-15","email":"jeanne_s@earth.com","street":"16 Ludden Dr.","city":"Austin","state":"TX","zip":"33347","phone":"964-665-8735","interests":"Great Depression,Spanish-American War,Westward movement,Civil Rights,Sports"}, {etc..}
这是我的app.js,
App = Ember.Application.create({});
App.Store = DS.Store.extend({
revision : 12,
adapter : DS.RESTAdapter.extend({
url : 'http://ankur1.local/index.php/api/example/users/format/json',
dataType : 'jsonp',
})
});
App.IndexRoute = Ember.Route.extend({
renderTemplate : function() {
this.render('myTemplate', {
controller : 'Index'
});
},
model : function() {
return App.myTemplate.find();
}
});
App.IndexController = Ember.Controller.extend({
user : Ember.Object.create({
name : ""
}),
userNameBinding : Ember.Binding.oneWay("this.user.name"),
clickButton : function(name) {
if ($("#name").val().trim().length === 0) {
alert("text box is empty");
} else {
}
}
});
App.myTemplate = DS.Model.extend({
id : DS.attr('int'),
last_name : DS.attr('string'),
first_name : DS.attr('string'),
suffix : DS.attr('string'),
expiration : DS.attr('date')
});
需要注意的一点是我在后端使用Phil Sturgeon的Codeigniter RestServer Library。我的代码可能有什么问题,或者它可能是后端的问题?
答案 0 :(得分:1)
Ember数据要求json响应采用某种格式。基本密钥需要是模型的名称。在您的情况下,没有基本密钥。
示例:您返回以下内容
[{"id":"1",
"last_name":"Solow",
"first_name":"Jeanne",
"suffix":null,
"expiration":"2013-11-15",
"email":"jeanne_s@earth.com",
"street":"16 Ludden Dr."}, {etc}]
但是ember需要这样的东西:
{'users': [{"id":"1",
"last_name":"Solow",
"first_name":"Jeanne",
"suffix":null,
"expiration":"2013-11-15",
"email":"jeanne_s@earth.com",
"street":"16 Ludden Dr."}, {etc}]}
您需要更改服务器的json响应,或者使用另一个库作为服务器的接口。