2015-07-19 49 views
2

有人可以解釋這個控制檯錯誤,我怎麼能解決它?JQuery未捕獲錯誤:在初始化之前無法在按鈕上調用方法;試圖調用方法'加載'

Uncaught Error: cannot call methods on button prior to initialization; attempted to call method 'loading'

這正是它的出現,點擊添加到購物車按鈕&觀看在Chrome開發者工具的控制檯時的頁面: http://tinyurl.com/pqb7wyr

車按鈕:

<button type="button" id="button-cart" data-loading-text="Loading..." class="btn btn-outline-inverse">Add to Cart</button> 

的Javascript:

<script type="text/javascript"><!-- 
$('#button-cart').on('click', function() { 
$.ajax({ 
    url: 'index.php?route=checkout/cart/add', 
    type: 'post', 
    data: $('#product input[type=\'text\'], #product input[type=\'hidden\'], #product input[type=\'radio\']:checked, #product input[type=\'checkbox\']:checked, #product select, #product textarea'), 
    dataType: 'json', 
    beforeSend: function() { 
     $('#button-cart').button('loading'); 
    }, 
    complete: function() { 
     $('#button-cart').button('reset'); 
    }, 
    success: function(json) { 
     $('.alert, .text-danger').remove(); 
     $('.form-group').removeClass('has-error'); 

     if (json['error']) { 
      if (json['error']['option']) { 
       for (i in json['error']['option']) { 
        var element = $('#input-option' + i.replace('_', '-')); 

        if (element.parent().hasClass('input-group')) { 
         element.parent().after('<div class="text-danger">' + json['error']['option'][i] + '</div>'); 
        } else { 
         element.after('<div class="text-danger">' + json['error']['option'][i] + '</div>'); 
        } 
       } 
      } 

      if (json['error']['recurring']) { 
       $('select[name=\'recurring_id\']').after('<div class="text-danger">' + json['error']['recurring'] + '</div>'); 
      } 

      // Highlight any found errors 
      $('.text-danger').parent().addClass('has-error'); 
     } 

     if (json['success']) { 
      $('#notification').html('<div class="alert alert-success">' + json['success'] + '<button type="button" class="close" data-dismiss="alert">&times;</button></div>'); 

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

      $('html, body').animate({ scrollTop: 0 }, 'slow'); 

      $('#cart > ul').load('index.php?route=common/cart/info ul li'); 
     } 
    } 
}); 
}); 
//--></script> 

我讀過,我應該重新排序腳本來加載boostrap js,所有jquery和jquery插件js來解決錯誤,但是這並沒有解決它。

+0

請顯示您的代碼 – brroshan

+1

您是否嘗試過重新排序腳本,因爲人們在這裏推薦http://stackoverflow.com/questions/15597430/cannot-call-methods-prior-to-initialization-attempted-to-call-method-refresh ? – halfzebra

+0

我確實嘗試對腳本進行重新排序,但沒有爲我解決這個問題。如果您查看部分,您會看到訂單。 Bootstrap在jquery和jquery插件之後加載。 – user123123

回答

0

嘗試beforeSend事件觸發之前初始化#button-cart作爲一個按鈕

$('#button-cart').button().on('click', function() { 
+0

我會用什麼代碼來初始化它? – user123123

2

對我來說,它是固定放置jQuery的ui.min.js文件bootstrap.js前

只要按一下Ctrl + U鍵在頁面上您會收到錯誤,並在<head>部分中檢查是否在bootstrap.js之後調用jquery-ui文件 這可能是導致錯誤的原因。

在調用bootstrap.js之前放置jquery-ui將解決此問題。

相關問題