1

我正在尝试使用 Laravel 4 中的 Knockout/Jquery 执行 .ajax get 来填充表。我使用 Ardent 并且它一直响应以下 json 响应。

{"throwOnFind":false}

控制器

    public function getData()
{
    $roles = Role::select(array('roles.id',  'roles.name', 'roles.id as users', 'roles.created_at'));
    return Response::json($roles, 200, array('Content-Type' => 'application/json'));
}

JavaScript

function Role(data) {
    this.id = ko.observable(data.id);
    this.name = ko.observable(data.name);
    this.users = ko.observable(data.users);
    this.created_at = ko.observable(data.created_at);
}
function ViewModel() {
    var self = this;
    self.roles = ko.observableArray([]);
    $.ajax({
        type: "GET",
        url: "{{ URL::to('admin/roles/data') }}",
        complete: function(allData) {
            var mappedRoles = $.map(allData, function(item) {
                return new Role(item);
            });
        }
    }, "json");

    self.roles(mappedRoles);
}

ko.applyBindings(new ViewModel());

我真的不知道从这里去哪里。我认为问题可能出在 Ardent 上。

4

1 回答 1

2

您正在滥用该select方法,因为 Role::select(...)它只返回一个查询对象(Builder)而不是结果本身。

因此需要使用其他方法,例如get执行查询并获得实际结果。

所以你需要写一些类似的东西:

$query = Role::select(array('roles.id',  ... , 'roles.created_at'));
$roles = $query->get();
return Response::json($roles, 200, array('Content-Type' => 'application/json'));
于 2013-10-22T07:10:28.093 回答