Доброго времени суток! После добавления товара в корзину выполняется ajax Код (Javascript): $(".product-button").click(function () { var pr = $(this).attr("pr"); var cat = $(this).attr("cat"); $.ajax({ type: "POST", url: "include/ajax-cart.php", data: ({prod:pr,categ:cat}), dataType: "html", cache: false, success: function(data) { $(".top-cart > ul > li").html(data); } }); }); В data передается код "товара в корзине". Но загруженный из ajax-cart.php не выполняет ajax запросы. Эту проблему решил подключив к ajax-cart.php файл js HTML: <script src="js/script.js"></script> Но в этом случае повторное добавление в корзину приводит к зацикливанию и событие ajax выполняется несколько раз. Как можно решить эту проблему?
Вот фрагмент код: PHP: <? echo '<a href="cart.php"> <span class="cart-icon"><i class="fa fa-shopping-cart"></i></span> <span class="cart-total"> <span class="cart-title">Корзина</span> <span class="cart-item">'.$col.' тов. - </span> <span class="top-cart-price">'.$sum.'<span class="rub14"> й</span></span> </span> </a> <div class="mini-cart-content">'; $result = mysql_query("SELECT * FROM cart,retail WHERE cart.id_prod=retail.retail_id AND cart.ip_bayer='$ip'",$link); while ($row = mysql_fetch_assoc($result)) { if ($row["retail_img"] != "" && file_exists("../img/product/".$row["retail_img"])) { $img_path = 'img/product/'.$row["retail_img"]; $max_wigth = 200; $max_height = 200; list($width, $height)=getimagesize("../".$img_path); $ratioh=$max_height/$height; $ratiow=$max_wigth/$width; $ratio=min($ratioh,$ratiow); $width=intval($ratio*$width); $height = intval($ratio*$height); }else { $img_path = "img/no-image.jpg"; $height=200; $width=200; } echo '<div class="cart-img-details"> <div class="cart-img-photo"> <a href="product-details.php?cat=retail&id='.$row["retail_id"].'"><img src="'.$img_path.'" alt="'.$row["retail_title"].'"/></a> </div> <div class="cart-img-content"> <a href="product-details.php?cat=retail&id='.$row["retail_id"].'"><h4>'.$row["retail_title"].'</h4></a> <span> <strong class="text-right">'.$row["col"].' x</strong> <strong class="cart-price text-right">'.$row["retail_price"].'<span class="rub14"> у</span></strong> </span> </div> <div class="pro-del"> <p pdel="'.$row["id_prod"].'"><i class="fa fa-times"></i></p> </div> </div> <div class="clear"></div>'; } echo '<div class="cart-inner-bottom"> <span class="total"> Итого: <span class="amount">'.$sum.'<span class="rub14"> й</span></span> </span> <span class="cart-button-top"> <a href="cart.php">Посмотреть карзину</a> <a href="checkout.php">Оформить заказ</a> </span> </div> </div>'; ?> <script src="js/script.js"></script> С кодом все нормально он прекрасно работает. Проблема только с <script src="js/script.js"></script>, надо куда то это запихать, что бы два раза не было обращения к файлу скриптов.
добавь какоенить скрытое поле id - генерируемое сервером - если у этого клиента будет 2 раза этот ид - зачем его добавлять ?
Код (Javascript): $( 'body' ).on( 'click', '.product-button', function (e) { e.preventDefault(); var pr = $(this).attr("pr"); var cat = $(this).attr("cat"); $.ajax({ type: "POST", url: "/include/ajax-cart.php", contentType: false, // важно - убираем форматирование данных по умолчанию processData: false, // важно - убираем преобразование строк по умолчанию data: ({prod:pr,categ:cat}), dataType: "html", cache: false, success: function(data) { $(".top-cart > ul > li").html(data); } }); });
--- Добавлено --- Не работает. Почему то если в файле ajax-cart.php нет <script src="js/script.js"></script> то скрипт не работает. А если есть то срабатывает и на ajax-cart.php и на index.php
хозяин - барин но реализация кода была в том, чтобы ajax код после дополнительной подгрузки страницы - работал, привязав к глобальному тегу BODY с использованием фун. on(). Тогда и отпадает 100500 подключений библиотек Аякса
Если использовать Код (Javascript): contentType: false, processData: false, то из ajax-cart.php ни что не выгружает. Если не использовать то опять зацыкливается. Но уже лучше, мой вариан после 4х кликов было 14 товаров в корзине, с Вашим вариантом - 8 товаров. )