Плагин автозаполнения jQuery не работает для ответа JSON (sValue.substring не является функцией) - PullRequest
1 голос
/ 05 апреля 2010

Я пытаюсь использовать плагин автозаполнения для jQuery (этот http://docs.jquery.com/Plugins/Autocomplete). Мой сервер возвращает строку JSON, которую я пытаюсь обработать на клиенте с помощью плагинов автозаполнения 'parse' и ' formatItem 'параметры, например, так:

$(document).ready(function()
{
    $('.searchBox input.textbox').autocomplete('/DoSearch.aspx',
    {
        mustMatch: false,
        autoFill: true,
        minChars: 1,
        dataType: 'json',
        parse: function(data)
        {
            var array = new Array();
            for (var i = 0; i < data.length; i++)
            {
                array[array.length] = { data: data[i], value: data[i].ID, result: data[i].ID };
            }
            return array;
        },
        formatItem: function(row, i, n)
        {
            return row.ID + ': ' + row.Title;
        }
    });
});

Когда я запускаю это, я получаю ошибку ' sValue.substring не является функцией ', генерируемую в Firebug. Тем не менее, если я добавлю точки останова на formatItem и функцию синтаксического анализа, они попадут, как ожидается, и содержат действительные данные, как кажется.

Вот точная копия 'n' вставки текста JSON, который возвращается с сервера:

[{"ID":140177,"Title":"Food Handling","Code":"J01.576.423.200"},{"ID":140178,"Title":"Food Handling","Code":"J01.576.423.200"},{"ID":140179,"Title":"Brain Infarction","Code":"C10.228.140.300.301.200"},{"ID":140180,"Title":"Cerebral Hemorrhage","Code":"C10.228.140.300.535.200"},{"ID":140182,"Title":"Insulin","Code":"D06.472.610.575"},{"ID":140183,"Title":"Insulin","Code":"D06.472.610.575"},{"ID":140184,"Title":"Insulin","Code":"D06.472.610.575"},{"ID":140186,"Title":"Insulin","Code":"D06.472.610.575"},{"ID":140188,"Title":"Insulin","Code":"D06.472.610.575"},{"ID":140189,"Title":"Sulfonylurea Compounds","Code":"D02.886.590.795"}]

Пожалуйста, помогите, я уже искал помощь в Google и StackOverflow, но не могу найти никого, у кого есть еще эта ошибка, ура!

1 Ответ

1 голос
/ 05 апреля 2010

Проклятье !!!

Я нашел причину проблемы. Это потому, что мое значение идентификатора в моей строке JSON было напечатано как целое число, а не как строка, например: {"ID":140177, вместо {"ID":"140177", и AutoComplete предполагает, что все будет строкой.

Я исправил проблему, заключив в кавычки значение идентификатора на сервере, или просто преобразовал его в строку clientside в функции 'parse' следующим образом: value: data[i].ID + '', result: data[i].ID + ''

...