【发布时间】:2014-07-09 17:10:23
【问题描述】:
这是我在这里的第一个问题,因此我们将不胜感激。我找到了大量相关信息,但没有一个完全符合要求。
我正在尝试通过 HTML 表单和 AJAX 将具有各种选项的产品添加到购物车中。添加产品本身是第一个障碍,但现在看起来有点空洞的胜利。
我的表单如下所示:(列表中有更多产品,但我已编辑以节省空间)
<form action="http://[site_url].com/index.php?route=checkout/cart/add/" id="quickQuoteForm" method="post">
<h3>Select your course</h3>
<div class="quickPriceRow1 row1">
<label>Choose a course</label>
<select class="quickPriceSelect" name="product_id" rel="1">
<option selected="selected" value="">Please choose...</option>
<option name="product_id" value="50">Intensive General English - 15 hours per week</option>
<option name="product_id" value="51">Intensive General English Course + Consolidation English/Exam Preparation Workshops (20 hours per week)</option>
</select>
然后,包含在相同的表单中,我有这样的产品选项:
<label>Choose a start date</label>
<select name="start_date" class="quickPriceSelect2" rel="2" id="start_date">
<option value="" selected="selected">Please choose...</option>
<option name="option[5]" value="49">Monday July 28</option>
<option name="option[5]" value="50">Monday August 04</option>
<option name="option[5]" value="51">Monday August 11</option>
<option name="option[5]" value="52">Monday August 18</option>
etc...
</select>
现在,我不是 100% 我的“name=...”是正确的,但我已经尝试了 'name="option[5]"' 和 'name="option_id[5]" '没有变化。我从 'option_description' 表和 'option_id' 列中获取 [5] 以及从 'option_value_description' 表和 'option_value_id' 列中获取的 value="50"。
感谢这个帖子 How do I add a product to OpenCart from an external site?(和一些小修修补补)我已经将产品添加到购物车中没有问题,但选项完全难倒我。
我的 jQuery 是:
$(document).ready(function() {
$('#quickQuoteForm button').click(function(e) {
e.preventDefault(); // prevent the form from submitting
$.ajax({
type: 'POST',
dataType: 'json',
url: 'http://[site_url].com/index.php?route=checkout/cart/add/',
data: 'product_id=' + $('.quickPriceSelect').val() + '&quantity=1' + '&product_option_id=' + $('.quickPriceSelect2').val() + '&product_option_id=' + $('.quickPriceSelect3').val(),
success: function(json) {
window.location = 'http://[site_url].com/index.php?route=checkout/cart';
}
});
});
});
如果有人能指出我正确的方向,那将是一个巨大的帮助,谢谢。
## 更新##
好的,所以我不再继续使用它,但我已经更改了我的 JS 以匹配我在 product.tpl 文件中找到的内容(默认和我正在使用的主题;Acceptus)。我现在有:
<script>
$('#button-cart').bind('click', function() {
$.ajax({
url: 'index.php?route=checkout/cart/add',
type: 'post',
data: $('select[name="product_id"], select[name="option[5]"], select[name="option[13]"]'),
dataType: 'json',
success: function(json) {
$('.success, .warning, .attention, information, .error').remove();
if (json['error']) {
if (json['error']['option']) {
for (i in json['error']['option']) {
$('#option-' + i).after('<span class="error">' + json['error']['option'][i] + </span>');
}
}
}
if (json['success']) {
$('#notification').html('<div class="success" style="display: none;">' + json['success'] + '<img src="catalog/view/theme/acceptus/image/icons/remove/close.png" alt="" class="close" /></div>');
$('.success').fadeIn('slow');
$('#cart-total').html(json['total']);
$('html, body').animate({ scrollTop: 0 }, 'slow');
}
if (json['success']) {
window.location = 'http://studioamanchester.com/index.php?route=checkout/cart';
}
}
});
});
</script>'
同样,它正在添加产品,但没有任何选项。我已经尝试过默认主题并在本地安装了站点以对其进行测试,但仍然没有。还有什么可以尝试的吗?
【问题讨论】:
-
当我实现opencart的时候,这已经是一个特性了。你用的是什么版本?购物车在线吗,可以发个链接吗?
-
抱歉,它位于:studioamanchester.com,位于“BOOK”下方。此外,它仅适用于英文版。谢谢
-
我不觉得你有问题,因为 这已经在 OpenCart 中实现,因为版本 1.3.x(当我第一次来到 OpenCart 时,这是 7 年前公平的!)。如果它在您的安装中不起作用,您应该注意您最近可能安装的模块/扩展/主题,这可能会破坏这种默认行为。如果可能(并且默认主题不会因您的更改而损坏),请将主题改回默认主题(在管理中)并尝试将带有选项的产品添加到购物车。你应该看到它工作得很好。看到您在将产品添加到购物车时遇到困难,这很奇怪……