我有以下使用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) {
        }
    })

10-05 20:49