select2 и axios: успех не является функцией - PullRequest
0 голосов
/ 14 ноября 2018

Я новичок в javascript, функциях обратного вызова и select2. Заранее спасибо за помощь:)

Я смотрю на реализацию select2 для поиска по API, но мне придется использовать axios вместо метода jQuery по умолчанию. Ниже мой код. Я могу отправлять и получать результаты, но я не уверен, как использовать обратный вызов успеха.

Я получаю «Ошибка типа: успех не является функцией»

$("#profile-select").select2({
    ajax: {
        transport: function(params, success, failure){
        axios.post("/rest/vue/1.0/profile/search", {query: $("#profile-select").val()})
        .then(function(response){
           success(response);
        })
        .catch(function(error){
           alert(error);
        });
    },
    processResults: function(data){
        var processedArray = [];
        data.profiles.forEach(function(item){
            processedArray.push({id: item.ID, text: item.name});
        });
        return processedArray;
        }
    },
    minimumInputLength: 2,
    placeholder: "Select a profile",
    allowClear: true
});

Вопросы

  1. Как вернуть данные ответа для processResults в функции .then по запросу axios? Документация на https://select2.org/data-sources/ajax
  2. Как лучше всего передать входные данные из списка выбора в запрос на публикацию? В настоящее время я использую функцию jQuery.val (), которая не работает.

1 Ответ

0 голосов
/ 14 ноября 2018

Вы можете создавать функции обратного вызова, как и любые другие функции. Например:

function success(response) {
  //do with response data what's necessary
}

Обратный вызов означает, что вы передаете эту функцию в качестве параметра для последующего выполнения.

Когда вы создаете ajax-транспорт select2, вы передаете имя своей функции в качестве параметра (как функцию обратного вызова). Когда выполнение кода встречается со строкой «success (response)»; тогда ваша функция успеха фактически выполняется.

...