如何在jquery自动完成内外访问json对jquery自动完成的响应?

时间:2013-05-04 04:19:02

标签: ajax jquery-ui jquery

以下是我回复的回复(它的工作):

{"matches":[
  {"_core_product_id":"648","finish":"Distressed Green\/Antique Bronze","COUNT(*)":"1"},
  {"_core_product_id":"157","finish":"Nightingale Green","COUNT(*)":"1"}],
"count":2}

我想在下拉列表中显示每个类别类别和COUNT(*)。我没有立即需要,但我可能希望并在自动填充字段之外的其他地方使用_core_product_id。

这是我的自动完成jquery代码:

.autocomplete({
    source: function( request, response ) {
        $.getJSON( 'controllers/clean/ajax/search.php', {
            'fieldid_tableid_type' : this.element[0].id,
            'term': extractLast( request.term )
        //}, response(['red', 'green', 'blue']) );
        }, 
        response );
    },
    search: function() {
        // custom minLength
        var term = extractLast( this.value );
        if ( term.length < 2 ) {
            return false;
        }
    },
    focus: function() {
        // prevent value inserted on focus
        return false;
    },
    select: function( event, ui ) {
        var terms = split( this.value );
        // remove the current input
        terms.pop();
        // add the selected item
        terms.push( ui.item.value );
        // add placeholder to get the comma-and-space at the end
        terms.push( '' );
        this.value = terms.join( '| ' );
        return false;
    },
    delay: 750
});

我无法弄清楚在哪里放置&#34;响应&#34;以及如何使用它。任何帮助都会很棒。我知道还有其他问题(很多),但我还没有找到解决我问题的问题。感谢。

我注意到jquery ui文档显示了在自动完成内部使用的响应。而一些例子显示了其他地方(例如,在源内)。 jQuery UI文档:http://api.jqueryui.com/autocomplete/#event-response

1 个答案:

答案 0 :(得分:0)

response是一个回调函数,您需要传递远程加载的值

.autocomplete({
    source: function( request, response ) {
        response($.getJSON( 'controllers/clean/ajax/search.php', {
            'fieldid_tableid_type' : this.element[0].id,
            'term': extractLast( request.term )
            //}, response(['red', 'green', 'blue']) );
        }));
    },
    search: function() {
        // custom minLength
        var term = extractLast( this.value );
        if ( term.length < 2 ) {
            return false;
        }
    },
    focus: function() {
        // prevent value inserted on focus
        return false;
    },
    select: function( event, ui ) {
        var terms = split( this.value );
        // remove the current input
        terms.pop();
        // add the selected item
        terms.push( ui.item.value );
        // add placeholder to get the comma-and-space at the end
        terms.push( '' );
        this.value = terms.join( '| ' );
        return false;
    },
    delay: 750
});