JQuery автозаполнение не показывать данные - PullRequest
1 голос
/ 16 января 2012

Я использую автозаполнение JQuery JSON, но он не показывает результат. Я использую следующий код.

$(function() {

    $( "#course" ).autocomplete({
        source: function( request, response ) {
            $.ajax({
                url: "ajax.php",
                dataType: "json",
                data: {
                    style: "full",
                    maxRows: 20,
                    name_startsWith: request.term
                },
                success: function( data ) {
                    response( $.map( data.geonames, function( item ) {
                        return {
                            Id: item.Id + (item.FirstName ? ", " + item.LastName : "") + ", " + item.Email,
                            value: item.Id
                        }
                    }));
                }
            });
        },
        minLength: 2,
        select: function( event, ui ) {
            log( ui.item ?
                "Selected: " + ui.item.label :
                "Nothing selected, input was " + this.value);
        },
        open: function() {
            $( this ).removeClass( "ui-corner-all" ).addClass( "ui-corner-top" );
        },
        close: function() {
            $( this ).removeClass( "ui-corner-top" ).addClass( "ui-corner-all" );
        }
    });
});
</script>

Результат Ajax-файла в этом формате.

      [{"Email":"shobaprashanth@gmail.com","FirstName":"Sobha","Id":12333,"LastName":"Marati"}]

1 Ответ

0 голосов
/ 16 января 2012

Я думаю, вам нужно создать объект json со свойствами label и value:

{[label: 'text', value: 'val']...}

потому что метод рендеринга по умолчанию для пунктов меню:

_renderItem: function( ul, item) {
    return $( "<li></li>" )
        .data( "item.autocomplete", item )
        .append( $( "<a></a>" ).text( item.label ) )
        .appendTo( ul );
}

Если вы хотите предоставить другой объект json в качестве источника данных, вы должны предоставить новый метод _renderItem и создать пункты меню самостоятельно с новыми свойствами.

...