2013-10-14 27 views
1

我試圖執行一個.ajax get來在Laravel 4中使用Knockout/Jquery填充一個表。我使用Ardent並且一直響應下面的json響應。獲取throwOnFind:來自Ardent在Laravel的虛假響應

{"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()); 

我真的不知道從哪裏何去何從。我認爲這個問題可能在熱心。

回答

2

您在濫用select方法,因爲Role::select(...)只返回查詢對象(Builder)而不是結果本身。

因此需要使用其他方法如get來執行查詢並獲得實際結果。

所以,你需要寫的東西liek:

$query = Role::select(array('roles.id', ... , 'roles.created_at')); 
$roles = $query->get(); 
return Response::json($roles, 200, array('Content-Type' => 'application/json')); 
+0

那麼簡單。另外,我必須使用Knockout的映射插件來顯示它。 – Chris

相關問題