我希望使用.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);
答案 0 :(得分: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);
}
});
答案 1 :(得分:0)
在我看来,你没有在请求中发送CSRF令牌,正如@HikmatSijapati指定的那样。在ajax请求中,您可以像这样传递csrf令牌:
例如,您可以将令牌存储在HTML元标记中:
<meta name="csrf-token" content="{{ csrf_token() }}">
然后,一旦创建了元标记,就可以指示像jQuery这样的库自动将标记添加到所有请求标头中。这为基于AJAX的应用程序提供了简单,方便的CSRF保护:
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
希望这有帮助!
答案 2 :(得分: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);
}
});
控制器
$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);
答案 3 :(得分:0)
感谢大家的帮助,但错误在于我不包括在控制器顶部使用Response。当我这样做时它起作用了。