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 Library を使用していることに注意してください。コードのどこが間違っているのでしょうか、それともバックエンドの問題でしょうか?

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 に答える