Здравствуйте Есть простенький интернет-магазин. Товары записаны в файле, tovar.json. Вывод товара на страницу вот (часть кода): Код: var cart = {}; function init() { $.getJSON("tovar.json", goodsOut); } function goodsOut(data) { var out=''; for (var key in data) { out +='<div class="cart">'; out +='<p class="name">'+data[key].name+'</p>'; out += '<img src="images/'+data[key].img+'" alt="">'; out +='<div class="cost">'+data[key].cost+'</div>'; out +='<button class="add-to-cart">Добавить в корзину</button>'; out +='</div>';......... Добавление в корзину и вывод вот (часть кода) Код (Text): var cart = {}; function loadCart() { //проверяю есть ли в localStorage запись cart if (localStorage.getItem('cart')) { // если есть - расширфровываю и записываю в переменную cart cart = JSON.parse(localStorage.getItem('cart')); showCart(); } else { $('.main-cart').html('Корзина пуста!'); } } function showCart() { //вывожу корзину if (!isEmpty(cart)) { $('.main-cart').html('Корзина пуста!'); } else { $.getJSON('tovar.json', function (data) { var goods = data; var out = ''; for (var id in cart) { out +='<div class="cart">'; out += `<button data-id="${id}" class="del-goods">Убрать из корзины</button><br><br>`; out += `<img src="images\\${goods[id].img}"><br>`; out += ` ${goods[id].name }<br>`; out += ` ${cart[id] } шт <br><br>`; out += `Сумма `; out += cart[id]*goods[id].cost; out += ` руб <br><br>`; out += `<button data-id="${id}" class="plus-goods">+</button>`; out += `<button data-id="${id}" class="minus-goods">-</button>`; out += '<br>'; out +='</div>';....... Начал переделывать под БД. В первом коде вывод из бд сделал, все нормально, все выводится Код (Text): var cart = {}; function init() { $.post( "md/core.php",{ "action" : "LoadGoods" }, goodsOut ); } function goodsOut(data) { var out=''; for (var key in data) {.......... А в корзине товар не выводится, помогите разобраться. Мне кажется все дело в строке Код (Text): $.getJSON('tovar.json', function (data) , но как ее переделать...тут и застрял
Код (Text): var cart = {}; // корзина function init() { //считываем файл goods.json $.getJSON("tovar.json", goodsOut); } function goodsOut(data) { // вывод на страницу //data=JSON.parse(data); console.log(data); var out=''; for (var key in data) { out +='<div class="cart">'; out +='<p class="name">'+data[key].name+'</p>'; out += '<img src="images/'+data[key].img+'" alt="">'; out +='<div class="cost">'+data[key].cost+'</div>'; out +='<button class="add-to-cart">Добавить в корзину</button>'; out +='</div>'; } $('.goods-out').html(out); $('.add-to-cart').on('click', addToCart); } function addToCart() { //добавляем товар в корзину var id = $(this).attr('data-id'); // console.log(id); if (cart[id]==undefined) { cart[id] = 1; //если в корзине нет товара - делаем равным 1 } else { cart[id]++; //если такой товар есть - увеличиваю на единицу } showMiniCart(); saveCart(); } function saveCart() { //сохраняю корзину в localStorage localStorage.setItem('cart', JSON.stringify(cart)); //корзину в строку } function showMiniCart() { //показываю мини корзину var out=""; for (var key in cart) { out += key +' количество '+ cart[key]+'<br>'; } $('.mini-cart').html(out); } function loadCart() { //проверяю есть ли в localStorage запись cart if (localStorage.getItem('cart')) { // если есть - расшифровываю и записываю в переменную cart cart = JSON.parse(localStorage.getItem('cart')); showMiniCart(); } } $(document).ready(function () { init(); loadCart(); }); {/code] это первый файл main.js, выводит товар на страницу index.html, при нажатии на кнопку "Добавить в корзину" добавляет товар и сохраняет в localStorage. Второй файл cart.js [code] var cart = {}; function loadCart() { //проверяю есть ли в localStorage запись cart if (localStorage.getItem('cart')) { // если есть - расширфровываю и записываю в переменную cart cart = JSON.parse(localStorage.getItem('cart')); showCart(); } else { $('.main-cart').html('Корзина пуста!'); } } function showCart() { //вывод корзины if (!isEmpty(cart)) { $('.main-cart').html('Корзина пуста!'); } else { $.getJSON('tovar.json', function (data) { var goods = data; var out = ''; for (var id in cart) { out +='<div class="cart">'; out += `<button data-id="${id}" class="del-goods">Убрать из корзины</button><br><br>`; out += `<img src="images\\${goods[id].img}"><br>`; out += ` ${goods[id].name }<br>`; out += ` ${cart[id] } шт <br><br>`; out += `Сумма `; out += cart[id]*goods[id].cost; out += ` руб <br><br>`; out += `<button data-id="${id}" class="plus-goods">+</button>`; out += `<button data-id="${id}" class="minus-goods">-</button>`; out += '<br>'; out +='</div>'; } $('.main-cart').html(out); $('.del-goods').on('click', delGoods); $('.plus-goods').on('click', plusGoods); $('.minus-goods').on('click', minusGoods); }); } } function delGoods() { //удаляем товар из корзины var id = $(this).attr('data-id'); delete cart[id]; saveCart(); showCart(); } function plusGoods() { //добавляет товар в корзине var id = $(this).attr('data-id'); cart[id]++; saveCart(); showCart(); } function minusGoods() { //уменьшаем товар в корзине var id = $(this).attr('data-id'); if (cart[id]==1) { delete cart[id]; } else { cart[id]--; } saveCart(); showCart(); } function saveCart() { //сохраняю корзину в localStorage localStorage.setItem('cart', JSON.stringify(cart)); //корзину в строку } function isEmpty(object) { //проверка корзины на пустоту for (var key in object) if (object.hasOwnProperty(key)) return true; return false; } function sendEmail() { var ename = $('#ename').val(); var email = $('#email').val(); var ephone = $('#ephone').val(); if (ename!='' && email!='' && ephone!='') { if (isEmpty(cart)) { $.post( "core/mail.php", { "ename" : ename, "email" : email, "ephone" : ephone, "cart" : cart }, function(data){ if (data==1) { document.location.replace ("cart.html"); alert('Заказ отправлен'); } else { alert('Повторите заказ'); } } ); } else { alert('Корзина пуста'); } } else { alert('Заполните поля'); } } $(document).ready(function () { loadCart(); $('.send-email').on('click', sendEmail); // отправить письмо с заказом }); выводит товар в самой корзине на странице cart.html( с функциями : убавить, прибавить, удалить и отправить по емейл).Пока товар выводился из файла, все работало, но как только я подключился к БД, заменив выделенный код на Код (Text): function init() { //считываем данные из БД $.post( "core.php",{ "action" : "LoadGoods" }, goodsOut ); } (файл core.php выглядит так Код (Text): <?php $action = $_POST['action']; require_once 'function.php'; switch ($action) { case 'init': init(); break; case "selectOneGoods": selectOneGoods(); break; case 'updateGoods': updateGoods(); break; case 'newGoods': newGoods(); break; } ) то перестала работать корзина, то есть товар из БД на выводится в index.html, а cart.html пустая страница запрос в БД и функции в файле function.php Код (Text): <?php $servername = "localhost"; $username = "root"; $password = ""; $dbname = "eshop"; function connect(){ $conn = mysqli_connect("localhost", "root", "", "eshop"); if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } return $conn; } function init(){ //вывожу список товаров $conn = connect(); $sql = "SELECT id, name FROM goods"; $result = mysqli_query($conn, $sql); if (mysqli_num_rows($result) > 0) { $out = array(); while($row = mysqli_fetch_assoc($result)) { $out[$row["id"]] = $row; } echo json_encode($out); } else { echo "0"; } mysqli_close($conn); } function selectOneGoods(){ $conn = connect(); $id=$_POST["gid"]; $sql = "SELECT * FROM goods WHERE id='$id'"; $result = mysqli_query($conn, $sql); if (mysqli_num_rows($result) > 0) { $row = mysqli_fetch_assoc($result); echo json_encode($row); } else { echo "0"; } mysqli_close($conn); } function updateGoods(){ $conn = connect(); $id=$_POST['id']; $name=$_POST['gname']; $cost=$_POST['gcost']; $descr=$_POST['gdescr']; $ord=$_POST['gorder']; $img=$_POST['gimg']; $sql="UPDATE goods SET name='$name', cost='$cost', description='$descr', ord='$ord', img='$img' WHERE id='$id'"; if (mysqli_query($conn, $sql)) { echo "Yes ov"; } else { echo "Error updating record: " . mysqli_error($conn); } mysqli_close($conn); } function newGoods(){ $conn = connect(); $name=$_POST['gname']; $cost=$_POST['gcost']; $descr=$_POST['gdescr']; $ord=$_POST['gorder']; $img=$_POST['gimg']; $sql = "INSERT INTO goods (name, cost, description, ord, img) VALUES ('$name', '$cost', '$descr', '$ord', '$img')"; if (mysqli_query($conn, $sql)) { echo "O Yes"; } else { echo "Error: " . $sql . "<br>" . mysqli_error($conn); } mysqli_close($conn); } function LoadGoods() { $conn = connect(); $sql = "SELECT * FROM goods"; $result = mysqli_query($conn, $sql); if (mysqli_num_rows($result) > 0) { $row = array(); while($row=mysqli_fetch_assoc($result)){ $out[$row["id"]]=$row; } echo json_encode($out); } else { echo "0"; } mysqli_close($conn); }
Есть, прошу прощения ,не все скопировал, иначе бы товар не выводился из БД Я думаю все дело вот в этой строке $.getJSON('tovar.json', function (data) в файле cart.js, данные о товаре считываются из файла, а как сделать из БД?
На главную страницу весь товар из Базы выводится, а при заказе , в корзину не выводится. --- Добавлено --- Код (Text): var cart = {}; function init() { $.getJSON("tovar.json", goodsOut); } вот вывод товара на главную страницу из файла Код (Text): var cart = {}; function init() { //$.getJSON("tovar.json", goodsOut); [LIST=1] [*] $.post( [*] "md/core.php",{ [*] "action" : "LoadGoods" [*] }, [*] goodsOut [*] ); [/LIST] } то же самое, только из БД, все работает, все выводится. Далее - вывод товара на страницу корзины. Вот в этой строке $.getJSON('tovar.json', function (data) , как я понимаю, тоже используется файл tovar.json. Я думаю, что все дело в этом. Код (Text): [LIST=1] [*][code] [*]var cart = {}; [*]function loadCart() { [*] //проверяю есть ли в localStorage запись cart [*] if (localStorage.getItem('cart')) { [*] // если есть - расширфровываю и записываю в переменную cart [*] cart = JSON.parse(localStorage.getItem('cart')); [*] showCart(); [*] } [*] else { [*] $('.main-cart').html('Корзина пуста!'); [*] } [*]} [*] [*]function showCart() { [*] //вывод корзины [*] if (!isEmpty(cart)) { [*] $('.main-cart').html('Корзина пуста!'); [*] } [*] else { [*] $.getJSON('tovar.json', function (data) { [*] var goods = data; [*] var out = ''; [*] for (var id in cart) { [*] out +='<div class="cart">'; [*] out += `<button data-id="${id}" class="del-goods">Убрать из корзины</button><br><br>`; [*] out += `<img src="images\\${goods[id].img}"><br>`; [*] out += ` ${goods[id].name }<br>`; [*] out += ` ${cart[id] } шт <br><br>`; [*] out += `Сумма `; [*] out += cart[id]*goods[id].cost; [*] out += ` руб <br><br>`; [*] out += `<button data-id="${id}" class="plus-goods">+</button>`; [*] out += `<button data-id="${id}" class="minus-goods">-</button>`; [*] out += '<br>'; [*] out +='</div>'; [*] } [/LIST]
@Атолий лан, взаимодействия явы и пыха мне плохо знакомы. но исходя из темы полагаю, что твоя ошибка в формате данных