Chúng tôi thỉnh thoảng phải đối mặt với vấn đề sau khi bật / thanh toán / giỏ hàng /. Như một hiệu ứng, nhấp vào "Tiếp tục thanh toán" không hoạt động.
Chúng tôi tin rằng quá trình này không hoạt động do lỗi javascript sau đây được ghi lại:
Vấn đề đã được tái tạo trên hai máy, ngay cả sau khi tải lại toàn bộ trang. Nhưng bây giờ không còn nữa.
Tôi đã xem mã ở dòng 90
getFromServer: function (sectionNames, forceNewSectionTimestamp) {
var parameters;
sectionNames = sectionConfig.filterClientSideSections(sectionNames);
parameters = _.isArray(sectionNames) ? {
sections: sectionNames.join(',')
} : [];
parameters['force_new_section_timestamp'] = forceNewSectionTimestamp;
/** Line 90 **/ return $.getJSON(options.sectionLoadUrl, parameters).fail(function (jqXHR) {
throw new Error(jqXHR);
});
}
};
Vì vậy, rõ ràng các tùy chọn không được tải bằng cách nào đó - nhưng chúng nằm trong hàm tạo, vậy làm thế nào điều này có thể?
Hạnh phúc vì sự giúp đỡ nào.
BIÊN TẬP
Tôi đã tìm ra vấn đề ở một mô-đun nơi chúng ta tương tác với dữ liệu khách hàng.
Chúng tôi có mã sau đây:
define([
'jquery',
'Magento_Customer/js/model/authentication-popup',
'Magento_Customer/js/customer-data'
], function ($, authenticationPopup, customerData) {
customerData.reload(['minvalue'],true).done(function(){
Trong một số trường hợp, mã này dường như được gọi trước hàm tạo
vendor/magento/module-customer/view/frontend/web/js/customer-data.js:366
'Magento_Customer/js/customer-data': function (settings) {
options = settings;
invalidateCacheBySessionTimeOut(settings);
invalidateCacheByCloseCookieSession();
customerData.init();
}
Câu hỏi: Làm thế nào tôi có thể buộc mã của mình được chạy, sau khi hàm tạo được chạy?