我正在尝试从 Laravel 路由返回 JSON 输出。这是我的路线:
Route::get('main-contact-count', function() {
$mc = MainContact::where('flag', '=', '1')->count();
return Response::json(['count' => $mc]);
});
如果我查看 Firebug 中的响应选项卡,我会回来:
{"count":9}
JSON 编码缺少方括号。这个 JSON 不同于 Laravel 从资源丰富的控制器返回的 JSON。它有方括号。Backbone 可以很好地解析它。Backbone 没有正确解析上述 JSON。如果您在console.log
收藏时查看长度和型号,它们都为零。但是,您可以深入到对象中,并且可以找到count
设置为 9 的属性。
如何从 Laravel 中获取正确的 JSON?
只是为了好玩和咯咯笑,我发布了我的 Backbone,以防我在那里做一些奇怪的事情:
App.Collections.Count = Backbone.Collection.extend({
model: App.Models.Count,
initialize: function(models, options) {
this.fetch({
success: function(data, options) {
// console.log(data.models);
}
});
if (options) {
this.url = this.url || options.url;
}
}
});
App.Views.Count = Backbone.View.extend({
tagName: 'span',
className: 'leadCount',
template: _.template($('#contactCount').html()),
initialize: function() {
},
render: function() {
this.$el.html(this.template(this.collection.toJSON()));
return this;
}
});
在我的路线中:
var mc = new (App.Collections.Count.extend({ url: 'main-contact-count' }))();
var mcv = new (App.Views.Count.extend({ collection: mc }))();