|
Как получить данные из БД и вывести в модальном окне
Доброго дня всем.
Пытаюсь сделать карточку быстрого просмотра товара, как сделано тут - https://likadress.ru/ Повесил событие на кнопку $(".element-view").on("click", function(){ let id_product = $(this).attr("id_product"); $.ajax({ url: laroute.route('product.show', {id_product}), type: 'GET', dataType: "json", data:{id:id_product}, success: function(response){ console.log("OK"); $(".modal_details").addClass("show-modal"); }, error: function (response) { console.log("NO") } }); }); В консоли получаю ответ ОК. В контроллере написал (все это дело хочу реализовать на Laravel): public function show($id) { $product = Product::find($id); return response()->json($product); } Вопрос - как получить переменную в модальном окне и как потом вывести данные о товаре? Может кто ткое уже делал? Поделитесь опытом. Спасибо. |
Цитата:
|
Может я неправильно выразился. Говоря о переменной, я и имел в виду $product.
Цитата:
|
Цитата:
Вот так получая значения свойств объекта response (ключей $product) непосредственно или обходом в цикле и помещайте их в нужное. А что там у вас в $product/response, что из него во что помещать никто ведь не знает на форуме, поэтому конкретно никто ничего и не скажет. |
Вывод console.log(response) показывает пустые скобки {}
Может я неправильно ajax-запрос написал? |
Ну в самом запросе нет ошибок, а верен ли путь и данные запроса, этого я не знаю. Что касается {} в консоли, то это означает, что $product, то есть то что возвращено Product::find($id), является пустым объектом, то есть на клиент будет отдан json "{}". Причину искать нужно на сервере, либо не те параметры в запросе передает клиент.
|
URL неправильно написал. Теперь нормально, в консоли выдает
{"id":53,"title":"\u0411\u0440\u044e\u043a\u0438 LB 52-071","alias":"bruki-LB-52-071-","meta_title":"\u0411\u0440\u044e\u043a\u0438 LB 52-071","meta_description":"","meta_keywords":"","status":"","sizes":null,"price":560,"articul":"","category_id":7,"category_alias":"womans","created_at":null,"updated_at":null} Но когда пишу success: function (response) { $(".modal_details h1").html(response.title); $('.modal_details').addClass("show-modal"); }, Опять что-то не так? |
Цитата:
|
Все получилось, данные выводятся, спасибо Вам за помощь.
Но теперь встала другая проблема - картинки к товару хранятся в другой таблице, связанной с первой. Я получил значения и отправил из контроллера две переменные так return response()->json([$images, $product]); В итоге получаю массив, в консоли это выглядит так: (2) [{…}, Array(5)] 0: {id: 53, title: "Брюки LB 52-071", alias: "bruki-LB-52-071-", meta_title: "Брюки LB 52-071", meta_description: "", …} 1: Array(5) 0: {id: 1, img: "01.jpg", product_id: 53, created_at: null, updated_at: null} 1: {id: 2, img: "02.jpg", product_id: 53, created_at: null, updated_at: null} 2: {id: 3, img: "03.jpg", product_id: 53, created_at: null, updated_at: null} 3: {id: 4, img: "04.jpg", product_id: 53, created_at: null, updated_at: null} 4: {id: 5, img: "05.jpg", product_id: 53, created_at: null, updated_at: null} Из первого массива получаю значения в срипте таким образом: $(".product-title h1").text(response[0].title); ... Все получается нормально. А вот с картинками беда - их нужно выводить в цикле. В шаблоне это выглядит так <ul class="product-preview"> @foreach($product->image as $item) <li class=""> <img src="{{ asset('img') }}/catalog/{{ $product->category_alias }}/{{ $item->img }}" alt=""> </li> @endforeach </ul> Как мне все это дело правильно написать в скрипте? Спасибо. |
Цитата:
PS. Кстати, зачем у foreach "собака" (надеюсь знаете для чего она) если родитель (UL) выводится без проверки наличия изображений, а $product->image по идее либо пустой массив/объект должен быть, что не вызовет ошибки, либо null, что не мешало бы проверить до цикла? |
Часовой пояс GMT +3, время: 13:59. |
|