select2 не отображает параметры

#javascript #jquery-select2

#javascript #jquery-select2

Вопрос:

Я использую select2 библиотеку для отправки ajax-запроса:

Я получаю данные обратно, когда что-то ищу, но по какой-то причине результаты не отображаются в раскрывающемся списке.

     $('.js-example-basic-single').select2({
    ajax: {
    url:"/search/search",
    type:"POST",
    data: function (params) {
        // Query parameters will be ?search=[term]amp;type=public
        var query = {
            search: params.term,
            type: 'public'
          }
        return query;
      },
      processResults: function (data) {
        // Transforms the top-level key of the response object from 'items' to 'results'
        data = JSON.parse(data)
        console.log(data)
        return {
            results: data.studentNumber
          };
      }
      // Additional AJAX parameters go here; see the end of this chapter for the full code of this example
    }
  });
  

Это данные, которые я вижу в своей консоли:

 [
 {
   studentNumber :"12324"
 },
 {
   studentNumber :"12324"
 },

]
  

Это то, что делает documentataion:

 $('#mySelect2').select2({
  ajax: {
    url: '/example/api',
    processResults: function (data) {
      // Transforms the top-level key of the response object from 'items' to 'results'
      return {
        results: data.items
      };
    }
  }
});
  

Комментарии:

1. Если это вывод журнала консоли, то вы получаете, array но пытаетесь проанализировать data как object . Попробуйте вернуть data сам.

2. Он прав, вместо этого return { data.studentNumber } попробуйте обычный return data . @KunalKukreja возможно, создайте это как ответ на этот вопрос, чтобы вы могли получить за это очки.

Ответ №1:

data Вы получили после преобразования array . Вызов data. studentNumber дал бы неопределенный результат, поскольку данные не являются объектом.

Просто верните сами данные, поскольку results в любом случае ожидается, что это будет array .

Простыми словами, измените это:

 return {
    results: data. studentNumber
};
  

Для

 return {
    results: data
};