Как отправить объект массива js в функцию контроллера laravel, используя тег <a>в поле зрения? - PullRequest
0 голосов
/ 03 августа 2020

У меня есть функция корзины в моем проекте, где идентификаторы элементов хранятся в объекте массива js, а длина объекта массива отображается в корзине. Я хочу загрузить представление и отобразить в нем элементы корзины, поэтому я хочу отправить объект массива js в качестве параметра функции контроллера laravel через тег <a>, когда пользователь нажимает на него.

Вот тег <a>, который должен отправлять объект cart контроллеру laravel:

<a href="#" >
    <i class="fa fa-shopping-cart"></i>
    <span id="cartLength"></span>
</a>  

Вот функция js, которая увеличивает cart объект массива:

function addToCart(id)
{
  if(! cart.includes(id) ) cart.push(id);

  cartLength.html(cart.length);
  $('#successCart'+id).html('Book added to cart.');

}  

Вот тег <a>, который добавляет товар в корзину, вызывая addToCart js функцию:

<a href="#" class="add-to-cart" 
   onclick="event.preventDefault(); addToCart('{{$book->id}}');">
   Add To Cart
</a>    

Вот функция контроллера, возвращающая представление:

public function showCart(Request $request)
{
    return view('cart', ['cart' => $request->cart ]);
}

Я не знаю, как отправить объект cart js в функцию laravel контроллера через тег <a>, а затем загрузить представление оттуда. Любая помощь приветствуется заранее.

1 Ответ

1 голос
/ 03 августа 2020

Если вы используете запрос ajax, при успешном выполнении ajax соберите данные (элементы корзины) и сохраните их в локальном хранилище. Затем отобразите элементы, загруженные в нужное вам представление, используя js. Например:

//let cart be the array you collected 

let cart = [];
let formdata = new FormData(cart);

$.ajax({
    url:"your/intended/url",
    type:"GET",
    data: formdata

}).done(function (data){
    cartItems = data;

    localStorage.setItem('cartItems', data);
    location.href = "view/cartPage";
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...