无法从服务器json响应创建骨干js集合

时间:2015-04-27 09:35:53

标签: json backbone.js laravel-5

行。 我知道这里有很多问题要问这个问题,但我的问题与它有点不同。

我有laravel作为后端服务器和定义的路由:

路线::交( '/ ALLUSERS',阵列( '使用'=> 'UsersController @索引');

@index方法(laravel):

public function index()
{
    //
    $user=DB::table('users')->select('id','name','email')->get();;
    if($user){
        return response()->json($user);
    }
    return "failed";
}

然后,我有一个backbonejs集合和模型如下: 用户模型:

user = Backbone.Model.extend({
urlRoot: '/user/'+this.id,
    default:{
        'name':'',
        'email':'unknown@no-name.com',
    },
render:function(){
    console.log(this.name);
}
, initialize:function(){
    console.log('model user created'+this.cid);
    console.log(this.name);
}

});

和骨干收集:

UserCollection = Backbone.Collection.extend({
    model:user,
    url:'/allusers/',
    parse:function(resp,xhr){
             rt= _.toArray(resp);
 return rt;
    },
    initialize:function(){
       this.fetch();
    }
});

但是无法创建集合。集合的models属性始终为0.

这是来自laravel的JSON响应:

[Object { id=1,  name="abc",  email="someone@google.com"}, Object { id=2,  name="anotheruser",  email="anotheruser@gmail.com"}]

请,任何建议。

提前谢谢你。

1 个答案:

答案 0 :(得分:0)

您没有从laravel返回有效的JSON。 Backbone认为它是错误的并触发错误回调。使用此代码段返回JSON

if($user){
      return Response::json($user->toArray());
    }

随着完美的json返回,你不必在模型中解析。所以你可以从你的模型中删除解析函数(除非你想操纵数据)。
所以你的模型应该是这样的,

UserCollection = Backbone.Collection.extend({
    model:user,
    url:'/allusers/',
    initialize:function(){
       this.fetch();
    }
});