Обновление корзины с помощью Jquery/Ajax

Я только что создал корзину здесь Кнопка "Добавить в корзину" отлично работают добавление товара в корзину без перезагрузки всей страницы.

Мой вопрос: как заставить корзину обновлять содержимое после нажатия ссылки «Добавить в корзину» без обновления страниц.

У меня есть код для обработки добавления продукта в корзину и отображения содержимого корзины.

<?php
if($what=="addtocart")
{
     if ($cart)
     {
        $cart .= ','.$_GET['product_id'];
     } 
     else 
     {
            $cart = $_GET['product_id'];
     }
     $_SESSION['cart'] = $cart;
}
echo writeShoppingCart();
?>

а вот функция writeShoppingCart()

function writeShoppingCart() {
    $cart = $_SESSION['cart'];
    if (!$cart) {
        return '<p>You have no items in your shopping cart</p>';
    } else {

echo "<table class=table cellpadding=5 cellspacing=0 width=87% border=0>";
echo "<tr class=bold>";
echo "<td width=65>ID Product</td>";
echo "<td>Pattern</td>";
echo "<td>Inst Type</td>";
echo "</tr>";
    include "config.php";
    global $dbhost,$dbusername,$dbpassword;
    $id_mysql = mysql_pconnect($dbhost,$dbusername,$dbpassword);
    mysql_select_db($dbname, $id_mysql);
    $cart = $_SESSION['cart'];
        $items = explode(',',$cart);
        $contents = array();
        foreach ($items as $item) {
            $contents[$item] = (isset($contents[$item])) ? $contents[$item] + 1 : 1;
        }
        foreach ($contents as $id=>$qty) {
        $view2 = "SELECT * FROM $table_product WHERE id='$id'";
        $result2 = mysql_query($view2);


        while
            ($baris=mysql_fetch_row($result2))
            {
echo "<tr>";
echo "<td>$baris[1]</td>";
echo "<td>$baris[2]</td>";
echo "<td>$baris[3]</td>";
echo "</tr>";
            }   

        }
        echo "</table>";
        echo "<span class=\"go_cart\">&raquo;&nbsp;<a href=\"cart.php\">View Complete Basket</a></span>";
    }
}

есть ли какая-нибудь подсказка, как сделать echo writeShoppingCart(); перезагрузку после добавления товара в корзину?


person user1737982    schedule 11.10.2012    source источник
comment
это потому, что нужно показать корзину обновлений пользователю   -  person XMen    schedule 11.10.2012
comment
Пожалуйста, отметьте свой вопрос в следующий раз как PHP. :-)   -  person Royi Namir    schedule 11.10.2012


Ответы (1)


вы забыли добавить session_start() после открытия тега <?php, поэтому я думаю, что вы ссылаетесь на пустую переменную, когда делаете это: $_SESSION['cart'] = $cart; $_SESSION['cart'] остается пустым, чтобы использовать переменную сеанса, которую вы ВСЕГДА должны помещать session_start прямо вверху страницы;

<?php session_start();
   //your stuff here
?>

Я только что проверил вашу страницу и заметил, что вы работаете в wordpress, wordpress не поддерживает использование переменных сеанса, поэтому вам придется искать страницу в вашей теме, которая получает первый контроль, обычно это header.php внутри каталога вашей темы: /yourroot/wp-content/themes/yourthemename/header.php вам нужно будет добавить приведенный выше код прямо вверху этой страницы.

также: я предупредил resp, возвращенный из «добавить ссылку», и он возвращает всю веб-страницу, скрипт php, который вы вызываете, должен быть за пределами WordPress, предпочтительно в файле, к которому вы обращаетесь напрямую, так что когда результат возвращается, у вас есть только вывод функции, которую вы повторяете

Пожалуйста, прокомментируйте, если у вас все еще есть ошибки

//код для динамического изменения таблицы элементов;

$(document).ready(function(){

    $('a#add-link').bind("click", function(event) {
        event.preventDefault();
        var url = $(this).attr("href");
        $.get(url, function (resp) {
            jAlert('Product Has Been Added to Shopping Cart');
            //to do the following you have to put your shoppingcart table in a div with the id="shoppingcart"
            $("#shoppingcart").html(resp)
        });
    });
});

PS: потому что я думаю, что вы забудете об этом, так как я делаю весь ваш код за вас.
прямо сейчас ваша страница сообщения: "http://ksul.kittenpile.com/product.php" возвращает всю веб-страницу, которую вы заметите, если добавите строку alert(resp); над функцией jAlert().
Она не должна возвращать всю веб-страницу, поэтому она не должна выводиться в браузер так же, как и другие ваши страницы. напечатано! должен быть отображен только результат writeShoppingCart() и НИЧЕГО БОЛЬШЕ!

person pythonian29033    schedule 11.10.2012
comment
Привет спасибо. На данный момент проблем с корзиной нет. Нам нужно автоматическое обновление содержимого корзины после добавления товара в корзину. - person user1737982; 11.10.2012
comment
хорошо, но если вы прочитаете мой ответ полностью, вы заметите, что я указал, что ваша страница публикации возвращает всю веб-страницу, она должна возвращать только содержимое writeShoppingCart(), после чего вы добавите код, который я добавил в свой ответ - person pythonian29033; 11.10.2012