Не удалось загрузить результаты при поиске пользователей

Мне нужно реализовать select2 с помощью ajax, и я использую это в качестве примера проекта для работы.

Это то, что у меня есть

Вид

<div class = "form-group">
    <div class = "col-md-10">
        <select class = "js-data-example-ajax form-control"></select>
    </div>
</div>

$(document).ready(function () {

    $('.js-data-example-ajax').select2({
        placeholder: 'Enter name',
        //Does the user have to enter any data before sending the ajax request
        minimumInputLength: 3,
        allowClear: true,
        ajax: {
            quietMillis: 150,
            // url: '@Url.Action("GetUsers", "CRMTItems")',
            url: '/CRMTItems/GetUsers/' + $('.js-data-example-ajax').text(),
            dataType: 'jsonp',
            results: function (data) {
                console.info('results');
                return { results: data.results }
            }
            // Additional AJAX parameters go here; see the end of this chapter for the full code of this example
        }
    });
)};

Контроллер

public JsonResult GetUsers(string term)
{
    var users = CRMTItemViewModel.AllUsers.Where(u => u.DisplayName.Contains(term));
    var userList = AttendeesToSelect2Format(users, 10);
    return Json(userList, JsonRequestBehavior.AllowGet);
}

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

Не удалось загрузить результаты при поиске пользователей

Я попытался точно скопировать образец проекта, но затем столкнулся с дополнительными проблемами:

  1. При использовании @Html.TextBoxFor вместо <select> я просто вижу

    No select2/compat/inputData

    в консоли js

  2. При точном копировании js (с функцией data и results) мой поисковый запрос никогда не попадает в контроллер, и null передается каждый раз ..

Пожалуйста, может кто-нибудь помочь с этим, я не понимаю

jsonp -> json
Andreas 31.05.2018 08:42

Также проверьте вкладку Netword консоли, вы получаете данные с сервера?

Amit Kumar 31.05.2018 08:45

@Andreas После перехода на json я теперь получаю Cannot read property 'slice' of undefined

Bassie 31.05.2018 08:52

Проверьте ответ, соответствует ли он формату, ожидаемому select2

Andreas 31.05.2018 08:56

@Andreas, похоже, это {"Total":10,"Results":[{"id":"_spocrawler_24_3595","text":"_‌​spocrawler_24_3595"}‌​,{"id":"_spocrwl_319‌​_15489","text":"_spo‌​crwl_319_15489"},{"i‌​d":"sp_farm_svc_spon‌​[email protected]","te‌​xt":"sp_farm_svc_spo‌​nline"},{"id":"_spoc‌​rwl_19649","text":"_‌​spocrwl_19649"}]}, и я думаю, что это правильно?

Bassie 31.05.2018 09:08
Results !== results
Andreas 31.05.2018 09:11

@Andreas Я пробовал как data.results, так и data.Results, и я также пытался не вызывать его с помощью JSON.parse, но я всегда получаю ту же ошибку

Bassie 31.05.2018 09:12
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
7
1 112
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Как предположил Андреас в комментариях, это произошло потому, что

Results !== results

Но вместо того, чтобы менять js, мне нужно было изменить свойство Results в Select2PagedResult на results.

Я не уверен насчет jsonp, но изменение его на json, похоже, не имело никакого значения, хотя класс в коде называется JsonpResult.

"даже если в коде класс называется JsonpResult" против public JsonResult GetUsers - либо вы ошибаетесь, либо код неверен.
Andreas 01.06.2018 15:25

@Andreas На самом деле образец кода имеет JsonpResult, который унаследован от JsonResult.

Bassie 02.06.2018 04:08

Другие вопросы по теме