Ajax公式运行在1行后停止工作。

时间:2013-08-19 22:01:45

标签: javascript ajax jquery

这很奇怪。第29行之前和之后的所有代码都有效。第29行之后的所有代码都不起作用。我在控制台上尝试了第30和31行,他们工作了。我尝试添加一行简单的代码,在第29行之前将背景更改为红色并且它有效。我在第29行之后放了同一行,但它没有用。

$('#button-shipping-method').live('click', function() {
    $.ajax({
        url: 'index.php?route=checkout/shipping_method/validate',
        type: 'post',
        data: $('#shipping-method input[type=\'radio\']:checked, #shipping-method textarea'),
        dataType: 'json',
        beforeSend: function() {
            $('#button-shipping-method').attr('disabled', true);
            $('#button-shipping-method').after('<span class="wait">&nbsp;<img src="catalog/view/theme/default/image/loading.gif" alt="" /></span>');
        },  
        complete: function() {
            $('#button-shipping-method').attr('disabled', false);
            $('.wait').remove();
        },          
        success: function(json) {
            $('.warning, .error').remove();
            if (json['redirect']) {
                location = json['redirect'];
            } else if (json['error']) {
                if (json['error']['warning']) {
                    $('#shipping-method .checkout-content').prepend('<div class="warning" style="display: none;">' + json['error']['warning'] + '<img src="catalog/view/theme/default/image/close.png" alt="" class="close" /></div>');
                    $('.warning').fadeIn('slow');
                }           
            } else {
                $.ajax({
                    url: 'index.php?route=checkout/payment_method',
                    dataType: 'html',
                    success: function(html) {
                        $('#payment-method .checkout-content').html(html); // LINE 29
                        $('#shipping-method .checkout-content').slideUp('slow');
                        $('#payment-method .checkout-content').slideDown('slow');
                        $('#shipping-method .checkout-heading a').remove();
                        $('#payment-method .checkout-heading a').remove();
                        $('#shipping-method .checkout-heading').append('<a><?php echo $text_modify; ?></a>');   
                    },
                    error: function(xhr, ajaxOptions, thrownError) {
                        alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
                    }
                });                 
            }
        },
        error: function(xhr, ajaxOptions, thrownError) {
            alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
        }
    }); 
});

1 个答案:

答案 0 :(得分:0)

看起来您的HTML元素id="shipping-method"(第30行引用)在DOM中不存在。

尝试此测试 - 在第30行插入:

alert('Line 30');
var test = $('#shipping-method').length;
alert(test);
alert('Line 33');

如果您收到1的提醒,则该元素存在;如果为零则该元素不存在。

告诉我们。