0

我有一个 jQuery 事件可以正常工作,直到调用警报。该函数调用服务器上的脚本,将商品(在数据库中插入一行)添加到购物车。购物车中只允许八件商品,因此当用户尝试添加第九件商品时,会向 jQuery 脚本返回一条不允许添加的消息。这是 jQuery 脚本:

jQuery(document).on('click', 'a.add.module, a.remove.module', function(e) {

    if (blnProcessing == true) {
        return false;
    } else {
        blnProcessing = true;
    }

    e.preventDefault();
    objLink = jQuery(this);
    strLink = objLink.attr('href');

    if (objLink.hasClass('add')) {
        objLink.text('Adding');
    } else {
        objLink.text('Wait');
    }

    jQuery.get(strLink, function(data) {
        if (data.success) {
            if (data.success != true) {
                alert(data.success);  // message that says this is not allowed -- this part stops the script from functioning further
            } else {
                // this part works
                jQuery('#cart').load('/study-clubs/modules/cart', function(){
                    if (objLink.hasClass('add')) {
                        strNewLink = strLink.replace('add', 'remove');
                        objLink.attr('href', strNewLink);
                        objLink.removeClass('add').addClass('remove').text('Added');
                    } else if (objLink.hasClass('remove')) {
                        strNewLink = strLink.replace('remove', 'add');
                        objLink.attr('href', strNewLink);
                            objLink.removeClass('remove').addClass('add').text('Add');
                    }

                    blnProcessing = false;

                });
            }
        } else {
            alert(data.error);
            blnProcessing = false;
        }
    }, 'json');
});

通常,对于这种行为,您使用$(document).on('click', '#someID', function() .... 但我已经在使用它了。所以我需要重新附加事件侦听器或其他东西。警报后如何使其正常工作?

4

1 回答 1

2

如果data.success包含在布尔上下文中计算为 true 但不等于的值true(因此执行包含的块alert(data.success)),blnProcessing则永远不会重置您的标志。

FWIW,我意识到有时需要额外的一双眼睛,但你真的应该能够通过在 Firebug(或另一组开发人员工具)中单步执行你的代码来解决这个问题。

于 2013-08-07T16:41:24.277 回答