簡體   English   中英

Laravel和AJAX不返回任何內容

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM