2015-11-05 2 views
4

Ниже маршрута:Laravel 5.1: Данные Ajax не получает от сервера

$router->get('/securityquestionlist', [ 'as'=> 'SecurityQuestionListIndexRoute', 'uses'=> '[email protected]']); 

Я следующие действия в классе контроллера:

public function index() 
{ 
    $model = new SecurityQuestionListModel(); 

    $data = $model->select('question','created_at', 'updated_at', 'status')->where('status', 1) 
      ->orderBy('created_at', 'desc') 
      ->paginate(3); 

if(Request::ajax()){ 
     return response()->json(['rData' => $data]); 
    }else{ 
     return view('securityquestionlist.index' /* ,['rData'=> $data]*/); 
    } 

Ниже Ajax код:

<script type="text/javascript"> 
    jQuery(document).ready(function() { 
     jQuery('#IdSQLTable').DataTable({ 
      'ajax' : 'http://localhost:9901/securityquestionlist', 
      'cache' : false 

     }); 
    }); 
</script> 

Я получаю следующие ответы AJAX с сервера:

{"rData":{}} 

Может ли кто-нибудь помочь мне, в случае AJAX, почему значение $ data не возвращается с сервера. Если я отключу ajax и загружаю обычную страницу, тогда значение будет получено на стороне клиента, а в строках таблицы будут заполнены данные. Сейчас я сделал замечания в:

return view('securityquestionlist.index' /* ,['rData'=> $data]*/); 
+0

Вы можете просто вернуть данные не делая ничего с этим. Laravel автоматически преобразует его в json. –

ответ

2

Думаю, вы должны преобразовать data в массив с помощью toArray()

$rData = $data->toArray(); 

Отклик посыла с помощью

return response()->json(['rData' => $rData]); 
Смежные вопросы