#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, чтобы мы могли продолжить поиск.