Laravel добавить в корзину с помощью ajax

я пытаюсь добавить товары в свою корзину с помощью ajax в laravel, но я получаю сообщение об ошибке 419 (статус неизвестен).

вот мой код ajax:

function btnAddCart(param) {
  var product_id = param;
  var url = "{{ route('cart.add') }}";
  $.ajax({
    type: "POST",
    url: url,
    data: { product_id: product_id },
    success: function (data) {
      console.info(data);

    },
    error: function (data) {
      console.info('Error:', data);
    }
  });
};

вот моя функция контроллера laravel

public function addToCart(Request $request)
{
    $product = Product::findOrFail($request->input('product_id'));
    $cart = session()->has('cart') ? session()->get('cart') : [];
    if (array_key_exists($product->id, $cart)) {
        $cart[$product->id]['quantity']++;
    } else {
        $cart[$product->id] = [
            'title' => $product->title,
            'quantity' => 1,
            'unit_price' => $product->sale_price,
        ];
    }
    session(['cart' => $cart]);
    session()->flash('message', $product->title.' added to cart.');

    $data = [];
    $data['cart'] = session()->has('cart') ? session()->get('cart') : [];
    return response()->json($data);
}

Итак, как мне вернуть данные json в функцию успеха ajax.

Есть ли проблема с этим кодом? Вы говорите «Я получил ошибку», но конкретно какая ошибка? На первый взгляд, единственное, что я вижу, это то, что $request->input(1) должен быть $request->input('product_id'), но в остальном, пока ваш PHP работает, он должен возвращать ответ JSON и быть доступным через ваш функция успеха.

Tim Lewis 23.01.2019 18:59

спасибо, но я получаю ту же ошибку.

Romi 23.01.2019 19:05

Ага; Ошибка 419 связана с тем, что вы не передаете токен CSRF. См. laravel.com/docs/5.7/csrf и добавьте некоторую логику для его передачи или игнорирования для маршрутов API.

Tim Lewis 23.01.2019 19:07

Спасибо вам, это работает.

Romi 23.01.2019 19:16

Без проблем! Не стесняйтесь опубликовать свое решение в качестве ответа.

Tim Lewis 23.01.2019 19:17
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
5
5 629
1

Ответы 1

Добавьте токен csrf в раздел заголовка html:

<meta name = "csrf-token" content = "{{ csrf_token() }}">

После этого добавьте это в свой раздел js:

$.ajaxSetup({
    headers: {
      'X-CSRF-TOKEN': $('meta[name = "csrf-token"]').attr('content')
    }
});

Другие вопросы по теме