Opencart中的Ajax无法正常工作

时间:2014-03-13 13:12:17

标签: jquery ajax opencart

我正在自定义OC中的产品页面(下面附带的图片)看起来不错,但是购物车的ajax是不行的,我无法将产品添加到购物车,我只是得到了通用错误,"选项"没有被选中。

代码:

<div class="widget">
 <?php foreach ($options as $option) { ?>
 <?php if ($option['type'] == 'radio') { ?>
  <div id="option-<?php echo $option['product_option_id']; ?>" class="option">
   <div class="title">
    <h2><?php echo $option['name']; ?>:</h2>
   </div>
   <table >
    <?php foreach ($option['option_value'] as $option_value) { ?>
     <tr>
      <td>
       <label>
        <input type="radio" name="option[<?php echo $option['option_id']; ?>]" value="<?php echo $option_value['option_value_id']; ?>" />
        <span style="width:40%;"><?php echo $option_value['name']; ?></span>
        <?php if($option_value['quantity'] == 0) { ?>
         <span style="width:20%;">Out of stock</span>
        <?php } else { ?>
         <span style="width:20%;"><?php echo $option_value['quantity']; ?> remaining</span>
        <?php } ?>
        <?php if ($option_value['price']) { ?>
         <span style="width:10%;"><?php echo $option_value['prefix']; ?> <?php echo $option_value['price']; ?></span> 
        <?php } else { ?> 
         <span style="width:10%;"><?php echo $option_value['prefix']; ?> <?php echo $special; ?></span>
        <?php } ?>
       </label>
      </td>
     </tr>
    <?php } ?>
   </table>
  </div>
 <?php } ?>
<?php } ?>
 <div class="cart">
    <?php echo $text_qty; ?>
    <input type="text" name="quantity" size="2" value="<?php echo $minimum; ?>" />
    <input type="hidden" name="product_id" size="2" value="<?php echo $product_id; ?>" />
    <input type="button" value="<?php echo $button_cart; ?>" id="button-cart" class="button" />
    <?php if ($minimum > 1) { ?>
     <div class="minimum">
      <?php echo $text_minimum; ?>
     </div>
    <?php } ?>
   </div>

上面的Ajax代码是:

<script type="text/javascript"><!--
$('#notification').hide();
$('#button-cart').bind('click', function() {
  $.ajax({
url: 'index.php?route=checkout/cart/add',
    type: 'post',
data: $('input[type=\'text\'], input[type=\'hidden\'], input[type=radio]:checked'),
    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').show();
            $('#notification').html('<div class="success" style="display: none;">' + json['success'] + '<img src="catalog/view/theme/default/image/close.png" alt="" class="close" /></div>');

            $('.success').fadeIn('slow');

            $('#cart-total').html(json['total']);

            $('html, body').animate({ scrollTop: 0 }, 'slow'); 
        }   
     }
       });
         });
         //--></script>

图像:

https://dl.dropboxusercontent.com/u/26243182/oc-options.png

如果我运行以下jQuery脚本,它会告诉我单选按钮的内容

$('input[type="radio"]').click(function(){
if ($(this).is(':checked'))
{
  alert($(this).val());
}

});

我可能遗漏了一些简单的东西,但这让我精神恍惚:)

感谢任何帮助

1 个答案:

答案 0 :(得分:0)

呵呵,你得到的错误是如果ajax根本无法读取你指定的选项意味着没有读取值,那么你也应该将input[type=radio]改为input[type=]\'radio\']如果这也失败了尝试

'input[name=\'option[<?php echo $option['product_option_id']; ?>]\']:checked'

我认为其中一个对您来说是正确的,或者至少可以指导您,这是针对ajax代码的。