我需要将产品从网站添加到购物车到ocart。我正在尝试以下代码。用户点击提交按钮后,我得到的只是“购物车空”。
我确保产品id = 40确实存在。 thansk任何帮助
<form action="http://***.com/purchase/index.php?route=checkout/cart" id="personalVirtualPrivateServerForm" method="post">
<input type="hidden" name="product_id" value="40">
<input type="hidden" name="quantity" value="2">
<input type="submit" alt="Order Now" title=" value="Order Now">
</form>
答案 0 :(得分:4)
表单操作应该是
http://***.com/purchase/index.php?route=checkout/cart/add
mind this particular action being called -^^^^
但是我认为这不会起作用,因为名为ControllerCheckoutCart::add()
的方法应该与返回JSON响应的AJAX请求一起使用。因此,如果您向此URL提交表单而不是显示购物车,则只显示JSON响应。
而不是直接提交表单您应确保在单击提交按钮后由jQuery AJAX提交。然后,您可以在成功时将用户重定向到购物车。这是可能的解决方案,请务必填写真实的域名。它没有经过测试。将此脚本放在表单所在的页面上(假设jQuery链接到该站点):
$(document).ready(function() {
$('form#personalVirtualPrivateServerForm input[type="submit"]').click(function(e) {
e.preventDefault(); // prevent the form from submitting
$.ajax({
type: 'POST',
dataType: 'json',
url: 'http://.../index.php?route=checkout/cart/add'
data: 'product_id=' + $('form#personalVirtualPrivateServerForm input[name="product_id"]').val() + '&quantity=' + $('form#personalVirtualPrivateServerForm input[name="quantity"]').val(),
success: function(json) {
window.location = 'http://.../index.php?route=checkout/cart';
}
});
});
});
答案 1 :(得分:2)
首先,您正在使用index.php?route=checkout/cart
作为控制器来显示购物车页面。这实际上并没有将任何产品添加到购物车中。
我会通过以下方式解决您的问题:
像
这样的东西 index.php?route=checkout/cart/addFromUrl&product_id=xx.
通过这样做,您只需从任何网站链接到此网址,您必须更改的是网址中的product_id
。您将不必使用ajax,这在您无法访问裁判方的代码的情况下可能很好(例如联盟营销,即)。它也将更容易维护,因为您的代码将在1个位置集中和编辑,而不必在多个引用站点上进行编辑。
实际功能看起来像这样
public function addFromUrl() {
$product_id = isset($this->request->get('product_id')) ? $this->request->get('product_id') : '';
if ($product_id) {
//your code (you can use $this->add i.e
//after adding the product, you will need to redirect to the product page or to the cart page
}
}
希望这有帮助!
雅妮