1

我正在根据控制台获取 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 库。我的代码可能有什么问题还是后端有问题?

4

1 回答 1

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 响应,或者使用另一个库作为与服务器的接口。

于 2013-07-24T10:33:09.047 回答