[英]Laravel and AJAX doesn't return anything
我想使用.ajax()
從數據庫中返回數據,但它會引發頁面的整個HTML錯誤。 為什么這樣做呢?
我的.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' => 'ReportsController@groupsUsersGet'
)
);
視圖(窗體)
{{ 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);
還發送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);
}
});
在我看來,您沒有按照@HikmatSijapati的指定在請求中發送CSRF令牌。 在ajax請求中,您可以像這樣傳遞csrf令牌:
例如,您可以將令牌存儲在HTML元標記中:
<meta name="csrf-token" content="{{ csrf_token() }}">
然后,一旦創建了meta標簽,就可以指示jQuery之類的庫將令牌自動添加到所有請求標頭中。 這為基於AJAX的應用程序提供了簡單便捷的CSRF保護:
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
希望這可以幫助!
嘗試這個:
在您的控制器中,您無法在方法內部定義$queries
變量。
阿賈克斯電話
$.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);
}
});
控制者
$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);
謝謝大家的幫助,但錯誤在於我未在控制器頂部使用“響應”。 當我這樣做時,它起作用了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.