我创建了一个"立即购买"链接,该链接从我的phpmyadmin数据库中提取URL。点击链接会将产品添加到购物车中,但我不希望用户在点击链接时去结账,而是停留在同一页面上,并弹出一条警告,说"产品已添加到购物篮中"。下面是我当前的脚本,但警报没有显示,用户转到链接。有人能告诉我怎么了吗?谢谢
<script>
$("#shop").onclick(function(event){
$.post( '" . $producturl[0]->URL . "' );
event.preventDefault();
event.stopPropagation();
console.log('Added To Cart');
});
</script>
<?php $producturl = ProductURL::find(array('Product'=>$tube1->Tube1));
if($producturl[0]->URL!=NULL){
echo '<a href="' . $producturl[0]->URL . '" data-role="button" data-inline="true" data-mini="true" data-theme="d" target="vspage" onclick="' . "_gaq.push(['_trackEvent', 'Buy Now', 'Tube', '" . $tube1->Tube1 . "'" . "]); _gaq.push(['_link', '" . $producturl[0]->URL . "']);" . '" id="shop">Test Cart</a>';
echo '<a href="#" id="shop">Test2 Cart</a>';
}
?>
$producturl[0]->URL是将当前产品从phpmyadmin 拉到购物车的数组
尝试删除锚点,使文本不再是链接,然后使其成为具有shop
id:的跨度
<?php $producturl = ProductURL::find(array('Product'=>$tube1->Tube1));
if($producturl[0]->URL!=NULL){
echo '<span id="shop">Test Cart</span>';
}
?>
使用
window.alert('Added To Cart')
而不是
console.log('Added To Cart')
您应该拥有jQuery并更改为:
$( document ).ready(function() {
$("#shop").click(function(event){
event.preventDefault();
// Your code here
// Alert user
alert('Added To Cart');
});
});
在同一页面上,您应该只有一个唯一的id!您有两个shop
ID。
更新:
你也有这个:
$.post( '" . $producturl[0]->URL . "' );
要在javascript中使用php变量,您应该回显它们,如:
$.post( '<?php echo $producturl[0]->URL;?>' );
我不知道$producturl[0]->URL
变量有什么,但这不足以更新你的购物车,如果你现在不想从服务器端做任何事情,也许你不需要这个$.post
。。。也许你只是想更新客户购物车,比如总价、数量,添加新产品。。。
但是,如果您现在真的需要从服务器端做一些事情,请查看此处的$.post
文档
<?php $producturl = ProductURL::find(array('Product'=>$tube1->Tube1));
if($producturl[0]->URL!=NULL){
echo '<a href="#shop" id="shop">Test2 Cart</a>';
}
?>
<script type="text/javascript">
$(document).on('click', '#shop', function (event) {
$.post( '" . $producturl[0]->URL . "' );
event.stopPropogation();
event.preventDefault();
alert('Product has been added to cart');
});
</script>
这是我当前的代码,警报最终会弹出,但当我转到页面时,购物车本身不会更新。我用了$.post
,对这最后一步有任何帮助都会很棒!