javascript - jQuery 中的回调

标签 javascript jquery jquery-select2

我有以下代码,它使用 ajaxSuccess()功能。我面临的问题是每当 AJAX 请求成功完成并且 jQuery 触发 the ajaxSuccess 时事件全部ajaxSuccess()方法执行。

我认为更好的解决方案是传递回调,但我无法弄清楚如何使用它,因为我是新手。

('#drop1').on('select2:select', (e) => {
    const selectedMake = e.params.data;
    utils.emptySelect2('#drop2');
    utils.emptySelect2('#drop3');
    utils.populateSelect2(`apiURL`, '#drop2');

    $(document).ajaxSuccess(() => {
        $('#drop3').select2('close');
        $('#drop2').select2('open');
    });
});

AJAX 调用:

populateSelect2(url, element, key) {
    $.get(url)
        .done((res) => {
            if (res) {
                let data = $.map(key ? res[key] : res, (obj) => {
                    obj.text = obj.name;
                    return obj;
                });
                data = sortBy(data, 'name');

                $(element).select2({
                    placeholder: 'please enter',
                    data
                });
            }
        })
        .fail(() => {
            this.showError(`Failed to call ${url}`);
        });
}

最佳答案

utils.populateSelect2 方法中,您将调用 ajax 调用来获取数据。在那里您可以维护成功或失败回调。如果您直接将 ajaxSuccess 方法附加到文档对象上,那么对于所有连续的 ajax 调用,您的 ajaxSuccess 方法将被调用。

 $.ajax({
        url: '??',
        dataType: '??',
        success: function (data, status) {
            console.log(data.responseText);
        },
        error: function(jqXHR, textStatus, errorThrown) {
        }
    })

关于javascript - jQuery 中的回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52946345/

相关文章:

javascript - 为什么我的 JQuery 淡入淡出 slider 不适用于任何 IE 类型?

javascript - 点击两次即可激活? javascript onclick 问题

jquery - 您可以将 JavaScript 和 CSS 文件存储在 localStorage 中以提高在线 Web 应用程序的性能吗?

css - 如何更改 select2 标签颜色的 css?

javascript - 如何制作与图像大小完全匹配的div叠加层

javascript - 检查 JS 值是否存在的最短方法是什么?

javascript - 使用 JQuery/Json 填充选择列表的最佳方式?

javascript - Select2 - 从后端获取数据并将选项添加到选择框

css - Select2 - 无法使搜索词匹配文本下划线

javascript - 将警报转换为 console.log