带有自定义JSON对象的jQuery UI自动完成

带有自定义JSON对象的jQuery UI自动完成,jquery,jquery-ui,user-interface,jquery-ui-autocomplete,Jquery,Jquery Ui,User Interface,Jquery Ui Autocomplete,当返回的JSON是数组时,jQueryUIAutoComplete(下面的代码)可以正常工作。但是我返回的JSON是一个包含数组的对象。因此,它不是行[]而是对象。行[] 我似乎无法理解下面的语法。我本以为item会切换到item.Rows,但这似乎不起作用。帮助 $('#reportingLocationLookup').autocomplete({ minLength: 3, delay: 1000, //milliseconds, source: functio

当返回的JSON是数组时,jQueryUIAutoComplete(下面的代码)可以正常工作。但是我返回的JSON是一个包含数组的对象。因此,它不是
行[]
而是
对象。行[]

我似乎无法理解下面的语法。我本以为item会切换到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);
};
$('#reportingLocationLookup')。自动完成({
最小长度:3,
延迟:1000,//毫秒,
来源:功能(请求、响应){
var dto={'term':request.term'take':10};
//阿贾克斯
var urlMethod=window.siteRoot+“发票/ListPostalLocations”;
var jsonData=JSON.stringify(dto);
SendAjax(urlMethod、jsonData、response);
},
焦点:功能(){
返回false;
},
选择:功能(事件、用户界面){
返回false;
}
}).数据(“自动完成”)。\u renderItem=功能(ul,项目){
返回$(“
  • ”) .data(“item.autocomplete”,item) .append(“+item.PostalCode+”-“+item.CityAlias+”,“+item.state缩写+”).appendTo(ul); };
    自动完成小部件要求向
    响应
    函数提供一个
    数组。这意味着您必须调整
    SendAjax
    调用的
    success
    参数:

    /* 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
    (autocomplete提供的回调函数)发送到响应对象中的数组。

    autocomplete小部件希望向
    response
    函数提供一个
    数组。这意味着您必须调整
    SendAjax
    调用的
    success
    参数:

    /* 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
    (autocomplete提供的回调函数)响应对象中的数组。

    我认为您的代码格式不对,缺少一些内容。所有代码都在那里。我在其他地方使用了这段代码,当item在根上是一个数组时,它可以正常工作。但是当数组离开根时,它不喜欢它。我没有展示SendAjax方法,但它工作得很好。我认为您的代码格式不正确,缺少了一些东西。所有的代码都在那里。我在其他地方使用了这段代码,当item在根上是一个数组时,它可以正常工作。但是当数组离开根目录时,它就不喜欢它了。我没有展示SendAjax方法,但它工作得很好。