Laravel和AJAX没有返回任何内容

时间:2016-12-14 16:23:55

标签: php jquery ajax laravel laravel-5

我希望使用.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);

4 个答案:

答案 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。当我这样做时它起作用了。