Tôi đang gặp một số vấn đề khiến đoạn mã sau hoạt động chính xác:
(hàm($) {
'Sử dụng nghiêm ngặt';
Drupal.behaviors.mybehavior = {
đính kèm: chức năng (bối cảnh, cài đặt) {
// Nhấp vào hình ảnh giữ chỗ, điều này sẽ mở một biểu mẫu và sau đó
// thay thế hình ảnh bằng tài nguyên video (nội dung được kiểm soát)
$(document).once('abc').on('click', '.image_class', function() {
var fid = 123 // Nhận ID thực thể biểu mẫu từ thuộc tính dữ liệu
var vid = 456 // Nhận ID thực thể tài nguyên từ thuộc tính dữ liệu
// Cuộc gọi AJAX này tải một biểu mẫu và trả về một OpenModalDialogCommand
// chứa biểu mẫu.
Drupal.ajax({
url: '/load/a/form/' + fid
}).execute().done(function() {
var id = // Nhận ID biểu mẫu Marketo
// Tải biểu mẫu từ Marketo
MktoForms2.loadForm('cname', '123-123-123', fid, function(form) {
form.onSuccess(function(e) {
form.getFormElem().hide();
// Nếu biểu mẫu được gửi thành công, hãy tải video
// tài nguyên và đặt nó trên trang bằng HTMLCommand
Drupal.ajax({
url: '/load/a/video/' + vid
}).execute().done(function() {
// Công việc dọn dẹp CSS/CSS cơ bản ở đây
});
trả về sai;
});
});
})
});
}
}
})(jQuery);
Toàn bộ quá trình hoạt động chính xác nhưng nó lặp lại các cuộc gọi AJAX trước đó ở mỗi bước.
Chẳng hạn, khi tôi nhấp vào bộ chọn ban đầu .image_class
cuộc gọi AJAX tải biểu mẫu hoạt động tốt.
Sau khi tôi hoàn thành biểu mẫu thành công, lệnh gọi AJAX thứ hai sẽ kích hoạt nhưng điều này dường như cũng kích hoạt lại lệnh gọi AJAX đầu tiên, đưa biểu mẫu vừa hoàn thành và xóa trở lại trang, mở lại hộp thoại một cách hiệu quả.
Mọi thứ đang kích hoạt chính xác, tôi chỉ không thể tìm ra cách để quy trình này hoạt động mà không kích hoạt lại tất cả các cuộc gọi AJAX trước đó.
Cảm ơn!