由于ReferenceError,“添加到购物车”按钮不起作用

时间:2013-08-19 21:55:40

标签: javascript magento

我的Magento主题中有一个“添加到购物车”按钮,我没有编辑它但它停止工作。它在前一段时间有所改进,不幸的是,当事情出错时,我没有抓住它。当我按下按钮时,前端没有任何反应,我在控制台中看到错误“Uncaught ReferenceError:productAddToCartForm is not defined”。

这是按钮HTML:

<button class="button btn-cart" title="Добавить в корзину" type="button" onClick="productAddToCartForm.submit(this)"><i class="icon-basket"></i>Добавить в корзину</button>

但是,当我查看页面源代码时,脚本位于页面中:

<script type="text/javascript">
//<![CDATA[
var productAddToCartForm = new VarienForm('product_addtocart_form');
<?php if(Mage::getStoreConfig('buyshopconfig/options/ajax_add_to_cart')){?>
productAddToCartForm.submit = function(button, url) {

    if (this.validator.validate()) {
        var form = this.form;
        var oldUrl = form.action;

        if (url) {
            form.action = url;
        }
        var e = null;
        // Start of our new ajax code
        if (!url) {
            url = jQuery('#product_addtocart_form').attr('action');
        }
        url = url.replace("checkout/cart","ajax/index"); // New Code
        var data = jQuery('#product_addtocart_form').serialize();
        data += '&isAjax=1';
        jQuery('#preloader .loader').fadeIn(300);
        try {
            jQuery.ajax( {
                url : url,
                dataType : 'json',
                type : 'post',
                data : data,
                success : function(data) {
                    jQuery('#ajax_loader').hide();
                    if(data.status == 'ERROR'){
                        alert(data.message);
                    }else{
                        jQuery('#preloader .loader').hide();

                        if(jQuery('.ul_wrapper.toplinks')){
                            jQuery('.shoppingcart').replaceWith(data.sidebar);
                        }

                        jQuery(".shoppingcart .fadelink").bind({
                            mouseenter: function(e) {
                                jQuery(this).find(".shopping_cart_mini").stop(true, true).fadeIn(300, "linear");
                            },
                            mouseleave: function(e) {
                                jQuery(this).find(".shopping_cart_mini").stop(true, true).fadeOut(300, "linear");
                            }
                        });
                        if(jQuery('#topline .links')){
                            jQuery('#topline .links').replaceWith(data.toplink);
                        }

                        jQuery('#preloader .inside').html('Товар "'data.name+'" был добавлен в вашу корзину');
                        jQuery('#preloader .message').fadeIn(300);

                        setTimeout(function(){
                            jQuery('#preloader .message').fadeOut();

                        },1500)
                    }
                }
            });
        } catch (e) {
        }
        // End of our new ajax code
        this.form.action = oldUrl;
        if (e) {
            throw e;
        }
    }
}.bind(productAddToCartForm);
<?php }else { ?>

productAddToCartForm.submit = function(button, url) {

    if (this.validator.validate()) {
        var form = this.form;
        var oldUrl = form.action;

        if (url) {
            form.action = url;
        }
        var e = null;
        try {
            this.form.submit();
        } catch (e) {
        }
        this.form.action = oldUrl;
        if (e) {
            throw e;
        }

        if (button && button != 'undefined') {
            button.disabled = true;
        }
    }
}.bind(productAddToCartForm);

<?php } ?>

productAddToCartForm.submitLight = function(button, url){

    if(this.validator) {
        var nv = Validation.methods;
        delete Validation.methods['required-entry'];
        delete Validation.methods['validate-one-required'];
        delete Validation.methods['validate-one-required-by-name'];
        // Remove custom datetime validators
        for (var methodName in Validation.methods) {
            if (methodName.match(/^validate-datetime-.*/i)) {
                delete Validation.methods[methodName];
            }
        }

        if (this.validator.validate()) {
            if (url) {
                this.form.action = url;
            }
            this.form.submit();
        }
        Object.extend(Validation.methods, nv);
    }
}.bind(productAddToCartForm);

<?php if(!Mage::helper('lightboxes')->isActive()):?>
jQuery("a.video").click(function() {
    jQuery.fancybox({
        'padding'       : 0,
        'autoScale'     : false,
        'transitionIn'  : 'none',
        'transitionOut' : 'none',
        'title'         : this.title,
        'width'     : 680,
        'height'        : 495,
        'href'          : this.href.replace(new RegExp("watch\\?v=", "i"), 'v/'),
        'type'          : 'swf',
        'swf'           : {
            'wmode'     : 'transparent',
            'allowfullscreen'   : 'true'
        }
    });

    return false;
});
<?php endif;?>
//]]>

有人能给出答案这个函数有什么问题吗?

1 个答案:

答案 0 :(得分:3)

在这一行(688)

jQuery('#preloader .inside').html('Товар "'data.name+'" был добавлен в вашу корзину');

你错过了+

jQuery('#preloader .inside').html('Товар "' + data.name + '" был добавлен в вашу корзину');