我在某些方面是新手,我需要有关商店页面的帮助。 对于您想添加到购物车中或从购物车中删除的每件商品,页面都会刷新,如果您想购买几件商品,那真的很烦人。 我读过我可以使用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的信息,但我一个人无法理解。
答案 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'); }
});
}