我正在尝试使用通过AJAX调用访问的PHP脚本更新位于标题中的Magento“迷你购物车”。
购物车有“增量”和“减量”按钮。单击时,将运行PHP脚本,并保存和更新购物车中特定产品的数量。
现在,问题是当我运行这个PHP脚本时,购物车中似乎没有任何项目。当我在主页面上时,我已经查看了会话ID,并且当脚本运行时它们似乎都不同。这就是为什么我认为剧本似乎相信我的购物车中没有任何物品。
我相信我为获取会话ID和购物车项而编写的代码是正确的。有谁知道我在这里做错了什么?
代码如下所示。我知道这可能写得更好,但是现在我只想看到一些有用的东西!。
header.phtml中的HTML(这是在循环中获取所有项目的篮子 - 在这里工作正常):
<button id="decrement" onclick="updateCart(<?php echo $product->getId(); ?>);" class="decrement">-</button>
<input type="text" class="quantity" name="quantity" id="quantity" value="<?php echo $product->getQty(); ?>">
<button id="increment" onclick="updateCart(<?php echo $product->getId(); ?>);" class="increment">+</button>
AJAX:
function updateCart(productId, qty) {
qty = jQuery('#quantity').val()
jQuery.ajax({
type: "POST",
dataType: "HTML",
data: { productId : productId, qty : qty },
url: "scripts/get_cart_script.php?productId=" + productId + "&qty=" + qty,
success: function (data) {
alert("Success");
},
error: function(data){
alert("Failure");
}
});
}
PHP:
require_once $_SERVER['DOCUMENT_ROOT'] . '/app/Mage.php';
Mage::app();
// Get session
Mage::getSingleton('core/session', array('name'=>'frontend'));
// Check for a product id
if(isset($_REQUEST['productId']))
{
// Product ID and Quantity
$pid = $_REQUEST['productId'];
$qnt = $_REQUEST['qty'];
$cart = Mage::getSingleton('checkout/cart');
$items = $cart->getItems();
foreach ($items as $item) :
if($pid == $item->getId()) :
echo $item->getQty();
$item->setQty($qnt);
$cart->save();
endif;
endforeach;
};
答案 0 :(得分:0)
您正在使用2个参数调用ajax更新函数,即产品ID和qty。并且您在增量和decrment按钮上调用了一个名为update的函数,只有一个名为productid的参数。
你可以做一件事。改变ajax更新函数参数。只使用一个名为product id的参数。