2016-12-14 2 views
0

Я хочу вернуть данные из моей базы данных с помощью .ajax(), но он выдает ошибку со всем HTML-страницей страницы. Почему это так?Laravel и AJAX ничего не возвращает

Мой .ajax() вызов:

$.ajax({ 
    url: '{{ URL('reports/groupsUsersGet') }}', 
    dataType: "json", 
    data: { 
     group_id : $('#group').val(), 
    }, 
    success: function(data) { 
     alert(data); 
    }, 
    error: function (data) { 
     console.log('Error:', data); 
    } 
}); 

маршрут

Route::get('reports/groupsUsersGet', 
    array(
     'as' =>'groupsUsersGet', 
     'uses' => '[email protected]' 
    ) 
); 

вид (форма)

{{ Form::select('grup',$group,null,['class'=>'form-control','id'=>'group']) }} 

контроллер

$term = Input::get('group_id'); 
$results = array(); 
DB::table('users')->where('group', 'LIKE', '%'.$term.'%')->get(); 

foreach ($queries as $query) { 
    $results[] = [ 
     'id' => $query->id, 
     'value' => $query->nick 
    ]; 
} 

return Response::json($results); 
+1

Какая ошибка? Что вы ожидаете? – LorenzoBerti

+0

Откуда берется запрос '$ query? Не могли бы вы указать его. –

+0

Используйте try и catch и сообщите точную ошибку u получите –

ответ

0

Также отправьте csrf_token() в качестве данных.

$.ajax({ 
     url: '{{ URL('reports/groupsUsersGet') }}', 
     dataType: "json", 
     data: { 
     _token: <?php echo csrf_token();?>, 
      group_id : $('#group').val(), 
     }, 
     success: function(data) { 
      alert(data); 
     }, 
     error: function (data) { 
      console.log('Error:', data); 
     } 
     }); 
+0

groupsUsersGet: 1061 Uncaught ReferenceError: XREXnSgsYpN3kJwjXGPguiJYZf6XIYxQa7YsYgDz не определен (...), когда я бросаю токен без него. Ajax error дает состояние: 200 и статус ok (что означает, что он прошел). – OunknownO

+0

ya XREXnSgsYpN3kJwjXGPguiJYZf6XIYxQa7YsYgDz это значение токена, который отправляет. Просто возьмите значение id группы. –

+0

Подробнее см. Здесь http://dev.tutorialspoint.com/laravel/laravel_ajax.htm –

0

Мне кажется, что вы не отправляете токен CSRF в запросе, как указано в @HikmatSijapati. В запросе Ajax вы можете передать CSRF токен, как это:

Вы могли бы, например, хранить маркер в мета-тег HTML:

<meta name="csrf-token" content="{{ csrf_token() }}"> 

Затем, как только вы создали мета-тег, вы можете указать библиотеку, такую ​​как jQuery, для автоматического добавления маркера во все заголовки запросов. Это обеспечивает простую и удобную защиту CSRF для ваших приложений на основе AJAX:

$.ajaxSetup({ 
    headers: { 
     'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 
    } 
}); 

Надеюсь, это поможет!

0

Попробуйте это:

В контроллере вы не можете определить $queries переменную внутри метода.

ajax call

$.ajax({ 
    url: "{{ URL('reports/groupsUsersGet') }}", 
    method: 'GET', 
    dataType: "json",   
    data: { 
     group_id : $('#group').val(), 
    }, 
    success: function(data) { 
     alert(data); 
    }, 
    error: function (data) { 
     console.log('Error:', data); 
    } 
}); 

controller

$term = Input::get('group_id'); 
$results = array(); 
$queries = DB::table('users')->where('group', 'LIKE', '%'.$term.'%')->get(); 

foreach ($queries as $query) { 
    $results[] = [ 
     'id' => $query->id, 
     'value' => $query->nick 
    ]; 
} 

return Response::json(['results' => $results], 200); 
0

Спасибо всем за вашу помощь, но ошибка была в моей не включая использование ответа в верхней части контроллера. Когда я это сделал, это сработало.

Смежные вопросы