Ошибка автозаполнения jQuery: «s не определено». Как я могу это решить?

#jquery #autocomplete

#jquery #автозаполнение

Вопрос:

Я использую jquery.autocomplete.js и следующий JS:

 $("#Search").autocomplete("/uk/Search/AutoComplete",
{
    dataType: 'json',
    parse: function (data) {
        var rows = new Array();
        for (var i = 0; i < data.length; i  ) {
            rows[i] = { data: data[i], value: data[i].Tag, result: data[i].Tag };
        }
        return rows;
    }, max: 20,
    formatItem: function (row, i, max) {
        return row.Tag;
    },
    width: 300,
    minChars: 4,
    highlight: false,
    multiple: false
});
  

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

Проблема, с которой я сталкиваюсь, заключается в том, что я вижу в консоли ошибок FireFox сообщение об ошибке s is undefined .

Сбой в следующем:

 $.Autocompleter.Cache = function(options) {

    var data = {};
    var length = 0;

    function matchSubset(s, sub) {
        if (!options.matchCase)
            s = s.toLowerCase(); // this is where it fails
        var i = s.indexOf(sub);
        if (options.matchContains == "word") {
            i = s.toLowerCase().search("\b"   sub.toLowerCase());
        }
        if (i == -1) return false;
        return i == 0 || options.matchContains;
    };
  

Почему это может привести к сбою? Могу ли я что-нибудь сделать, чтобы это исправить?

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

1. Вы передаете переменную для s?

2. что такое Autocompleter.Cache ? Это не часть пользовательского интерфейса jQuery…

3. @Tim, я ничего не делаю с s . Я не знаю, что это за переменная, и я ничего не передаю для нее

4. Отправьте свой ajax-ответ в формате JSON, возможно, проблема в этом.

5. Что значит «ничего не делать с s «? Разве это не ваш код?

Ответ №1:

Большую часть времени…

Когда я получаю сообщение «[что-то] не определено», это потому, что мои объекты ответа JSON содержат недопустимый символ в JSON или JSON неправильно отформатирован…возвращаем объект как неопределенный.

Пожалуйста, опубликуйте свой JSON, чтобы мы могли продолжить поиск.