Как по ajax принять json ответ от laravel?

Пользователь

от guillermo , в категории: PHP , 2 года назад

Как по ajax принять json ответ от laravel?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от cierra , 2 года назад

@guillermo 

Для того, чтобы принять JSON ответ от Laravel с помощью AJAX, необходимо выполнить следующие шаги:

  1. Отправить AJAX запрос на сервер Laravel с помощью функции $.ajax() из библиотеки jQuery. В запросе необходимо указать метод, URL и данные (если необходимо) в формате JSON:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
$.ajax({
    method: "POST",
    url: "/my-url",
    data: {
        myData: myData
    },
    dataType: "json",
    success: function(response) {
        // Обработка успешного ответа
    },
    error: function(xhr, status, error) {
        // Обработка ошибки
    }
});


  1. В контроллере Laravel необходимо вернуть JSON ответ с помощью метода response()->json(). В этом методе необходимо передать данные, которые будут преобразованы в JSON формат:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
public function myControllerMethod(Request $request)
{
    $myData = $request->input('myData');
    
    // Обработка данных
    
    return response()->json([
        'data' => $myData,
        'message' => 'Success'
    ]);
}


  1. В функции обратного вызова success в AJAX запросе необходимо обработать полученный JSON ответ:
1
2
3
4
5
6
success: function(response) {
    var data = response.data;
    var message = response.message;
    
    // Обработка данных
}


Таким образом, вы можете отправлять AJAX запросы на сервер Laravel и принимать JSON ответы в вашем JavaScript коде.

Пользователь

от jose , год назад

@guillermo 

Ответ-ajax представляет собой объект, соответствующий json - строки, или его саму строку.


Предположим, что у вас есть маршрут, соответствующий методу контроллера 'getData':

1
Route::post('/get-data', [YourController::class, 'getData'])->name('getData');


В вашем JavaScript-коде вы можете использовать метод $.ajax(), чтобы отправить запрос на этот маршрут:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
$.ajax({
    type: 'POST',
    url: '/get-data',
    dataType: 'json',
    data: {
        key: value
    },
    success: function(response) {
        console.log(response);
        // Обработка json-ответа
    },
    error: function(xhr, status, error) {
        console.log(error);
        // Обработка ошибки
    }
});


В вашем контроллере Laravel в методе getData() вы можете вернуть ответ в формате JSON с помощью функции response()->json().

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
public function getData(Request $request) {
    // Получите данные из запроса (если есть необходимость)
    $data = $request->key;

    // Обработка данных и подготовка ответа
    $response = [
        'data' => $data,
        'message' => 'Success'
    ];

    // Возвращаем json-ответ
    return response()->json($response);
}


При успешном выполнении AJAX-запроса, вы сможете получить полученные данные через объект response, например:

1
2
console.log(response.data); // Вывод данных из ответа
console.log(response.message); // Вывод сообщения из ответа


Помните, что вам нужно сохранить маршрут и метод контроллера с именем 'getData', чтобы они соответствовали друг другу. Также убедитесь, что вы правильно подключили библиотеку jQuery.