JQuery UI Автозаполнение с пользовательским объектом JSON - PullRequest
1 голос
/ 19 декабря 2011

jQuery UI Autocomplete (код ниже) прекрасно работает, когда возвращаемый JSON является массивом. Но мой возвращенный JSON - это объект, который содержит массив. Таким образом, вместо того, чтобы быть Rows[] это Object.Rows[]

Я не могу понять синтаксис ниже. Я бы подумал, что элемент просто переключился бы на item.Rows, но это не сработало. Помощь

$('#reportingLocationLookup').autocomplete({
    minLength: 3,
    delay: 1000, //milliseconds,  
    source: function (request, response) {
        var dto = { 'term': request.term, 'take': 10 };
        //Ajax
        var urlMethod = window.siteRoot + "Invoices/ListPostalLocations";
        var jsonData = JSON.stringify(dto);
        window.SendAjax(urlMethod, jsonData, response);
    },
    focus: function () {
        return false;
    },
    select: function (event, ui) {
        return false;
    }
}).data("autocomplete")._renderItem = function (ul, item) {
    return $("<li></li>")
    .data("item.autocomplete", item)
    .append("<a>" + item.PostalCode + " - " + item.CityAlias + ", " + item.StateAbbreviation + "</a>").appendTo(ul);
};

1 Ответ

4 голосов
/ 19 декабря 2011

Виджет автозаполнения ожидает, что Array будет предоставлен функции response. Это означает, что вам придется настроить аргумент success вашего SendAjax вызова:

/* snip */
source: function (request, response) {
    var dto = { 'term': request.term, 'take': 10 };
    //Ajax
    var urlMethod = window.siteRoot + "Invoices/ListPostalLocations";
    var jsonData = JSON.stringify(dto);
    window.SendAjax(urlMethod, jsonData, function(data) {
        response(data.Rows);
    });
},
/* snip */

По сути, отправьте response (предоставленная функцией обратного вызова автозаполнения) массив в объекте ответа.

...