Ajax или асинхронный JavaScript и XML - одна из самых красивых частей веб-страниц для создания запроса к внутреннему серверу из приложения на основе Laravel или PHP, поскольку он потенциально останавливает загрузку страницы без необходимости для такой небольшой задачи, как «Оценить сообщение» или « Комментирование сообщения », а также экономит много ресурсов, и многие HTTP-запросы не вызываются, как веб-страница, выполняемая при каждой загрузке страницы.

Выполнить вызов ajax с использованием библиотеки, такой как jQuery, Axios, fetch api и т. Д., Не так уж и сложно, или даже вы можете использовать ванильный javascript для создания Ajax или XMLHttpRequest.

В этом блоге я расскажу о том, как сделать запрос ajax из вашего приложения на laravel с помощью jQuery. Существуют и другие библиотеки, вы можете использовать любую из них.

В своих предыдущих блогах я рассказывал об аутентификации, мульти-авторизации, отношениях и многих других темах о Laravel. Не забудьте проверить их.



Запрос jQuery Ajax

Сделать базовый запрос ajax без каких-либо накладных расходов очень просто. Если вы хотите узнать обо всех методах, доступных в jQuery для выполнения запроса ajax, посетите это:



Начнем с простого запроса на получение данных пользователя.

Прежде всего, мы должны добавить jQuery cdn или мы можем включить весь пакет. В этом блоге я буду использовать CDN следующим образом:

<script src="https://code.jquery.com/jquery-3.6.0.js" integrity="sha256-H+K7U5CnXl1h5ywQfKtSj8PCmoN9aaq30gDh27Xc0jk=" crossorigin="anonymous"></script>

Добавьте это в файл макетов, который вы использовали для включения в свой файл лезвия, в конце раздела тела.

Делаем запрос из файла лезвия:

<div class="user__info p-3">
    <small class="error text-danger mb-2 d-block"></small>
</div>
    <button class="btn btn-primary" data-id="{{ auth()->id() }}" onclick="fetchData(this)">
       Fetch My Data
</button>
<script>
    function fetchData(e){
        let id = e.dataset.id
        $.ajax({
            type:'GET',
            url:"{{ route('user.data') }}",
            //dataType:'html', (optional)
            //headers:{ (optional)
               'accept':"Application/json",
               'content-type':"Application/json"
            //},
            data:{id},
            success:function(data){
                $('.user__info').html(data)
             },
             error:function(err){
                  const error = JSON.parse(err.responseText).message
                   $('.error').html(error)
              }
        })
    }
</script>

В приведенном выше коде fetchData () - это функция, которая используется для отправки запроса ajax с помощью функции $ .ajax (), доступной в библиотеке jQuery.

Мы должны проложить маршрут перед всем, что есть в файле routes / web.php, например:

Route::group(['middleware'=>'auth'],function(){
Route::get('user/data',       [App\Http\Controllers\UserController::class,'getData'])-   >name('user.data');
});

Метод getData () UserController выглядит примерно так:

public function getData(Request $request){
    $user_id = $request->id;
    $user = User::find($user_id)->first(['name','email','mobile']);
    // $user = auth()->user();
    return view('users.data',compact('user'));
}

В приведенном выше методе у нас есть два варианта выборки пользователя. Один из них - использование фасада auth (), а другой - отправка идентификатора в качестве параметра получения, а затем выборка пользователя по этому идентификатору. Я упомянул оба метода выше.

Мы возвращаем блейд-файл представления users.data, который содержит внутри соответствующий html и выглядит примерно так:

<table border="1"  cellpadding="8" cellspacing="8">
    <thead>
        <tr>
            <th>Name</th>
            <th>Email</th>
            <th>Mobile</th>
        </tr>
    </thead>
    <tbody>
          <tr>
              <td>{{ $user->name }}</td>
               <td>{{ $user->email }}</td>
               <td>{{ $user->mobile }}</td>
          </tr>
    </tbody>
</table>

Еще одна вещь, на которой я хочу сосредоточиться здесь, - это при использовании метода POST вы должны отправить токен csrf, поскольку каждый запрос в Laravel защищен токеном csrf, поэтому мы можем сделать почтовый запрос и отправить токен csrf следующим образом:

//change the type to "POST" in $.ajax({}) method and in web.php file
$.ajaxSetup({
    headers : {
       'X-CSRF-TOKEN' : $('meta[name="csrf-token"]').attr('content')
    }
});

Вот и все ... Теперь вы можете отправлять любой объем данных или запрашивать и получать данные без необходимости перезагружать страницу.

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

Весь код этого блога загружен на github здесь: