添加到购物车/从购物车中删除而无需刷新页面

时间:2018-10-04 09:55:39

标签: php ajax

我在某些方面是新手,我需要有关商店页面的帮助。 对于您想添加到购物车中或从购物车中删除的每件商品,页面都会刷新,如果您想购买几件商品,那真的很烦人。 我读过我可以使用AJAX,我读了很多方法,但对我没有任何帮助。 我需要做什么才能使其正常运行? 这些是我的添加/删除:

<form action="" method="post">
    <input type="hidden" name="item_id" value="{sid}">
    <input type="hidden" name="parent" value="{parent_category}">
    <input type="submit" name="atc" value="Añadir" class="sub-link">
</form> 

<form action="" method="post">
    <input type="hidden" name="item_id" value="{cid}">
    <input type="hidden" name="parent" value="{parent_category}">
    <input type="submit" name="rfc" value="Remover" class="sub-link">
</form>

这是处理提交的功能:

function add_to_cart() {
    global $db, $db_data, $db_acc, $login;

    if (!empty($_POST['atc']) || !empty($_POST['rfc']) 
        && isset($_GET['page']) && isset($_GET['data']) 
        && $_GET['page'] == "store_shop") {

        $data = $_GET['data'];
        $pos  = strpos($data, "-");
        if ($pos == TRUE) {

            $ndt = explode("-", $data);
            $d1  = clean($ndt[0]);
            $d2  = clean($ndt[1]);

            if ($d1 == FALSE) {
                $d1 = 0;
            }
        } else {
            $d1 = 0;
            $d2 = 0;
        }

        $sqli = $db->query("SELECT id, rname, char_db FROM $db_data.realms WHERE id='$d1'");
        $numi = $db->num($sqli);
        $geti = $db->get($sqli);
        $cdb  = $geti['char_db'];

        $sqla = $db->query("SELECT id, username FROM $db_acc.account WHERE username='$login'");
        $geta = $db->get($sqla);
        $acid = $geta['id'];

        if ($numi == 1) {
            $sqlc = $db->query("SELECT guid, account, name FROM $cdb.characters WHERE account='$acid' AND guid='$d2'");
            $numc = $db->num($sqlc);
            $getc = $db->get($sqlc);

            if ($numc == 1) {
                $item   = clean($_POST['item_id']);
                $parent = clean($_POST['parent']);

                if (!empty($_POST['atc'])) {
                    $sqll = $db->query("INSERT INTO $db_data.cart (`realm`, `account`, `character`, `item`, `parent`) VALUES ('$d1', '$acid', '$d2', '$item', '$parent')");
                } else if (!empty($_POST['rfc'])) {
                    $sqll = $db->query("DELETE FROM $db_data.cart WHERE id='$item'");
                }
                header("Location: ?page=store_shop&data={$data}");
            } else {
                header("Location: ?page=store_shop&data={$data}");
            }
        } else {
            header("Location: ?page=store_shop&data={$data}");
        }
    }
}

编辑:我想我缺少一些细节: 单击“添加”(西班牙语中的“Añadir”)或“删除”(西班牙语中的“删除”)后,页面将重新加载,并将商品添加到购物车div中。 当我尝试在stackoverflow或其他网站上阅读的解决方案时,大多数解决方案都不适用于我的商店,而我唯一能获得的就是防止重新加载页面但购物车不会更新。 也许我应该在购物车div中使用iframe? 我仍在阅读有关Ajax的信息,但我一个人无法理解。

2 个答案:

答案 0 :(得分:0)

这是一种形式,通常会导致页面加载,除非默认的onsubmit动作被覆盖并且Override函数在事件对象上导致stopPropagation。 AJAX需要使用其中创建XMLHttpRequest对象(或IE的ActiveX)的JS,并且默认情况下无需刷新即可与服务器通信(尽管可以通过编程方式完成)。然后您的服务器可以返回例如JSON或有关指示调用是否成功和错误的某种指示符,并且客户端可以相应地处理它

答案 1 :(得分:0)

尝试一下

删除提交按钮并调用功能添加到购物车,并使用锚标记中的onclick =“ addtocart()”表示从购物车中删除

function addtocart(){ get 'sid' and 'parent' value from anchor tag using jquery
$.ajax({
type: 'POST',
url: '/cart/add.php',
data:{ 'sid':sid, 'parent':parent }
success : function(data) { alert('success'); } }); }