自动填充:为什么我的响应对象不会同时返回名字和姓氏?

时间:2016-06-01 20:07:03

标签: javascript jquery autocomplete

我使用Ajax对JQuery Autocomplete完全陌生。我有90%的方式使用下面的代码。使用Chrome开发工具,我可以在firstname:item.firstname1旁边看到所有我的值,也就是说,名字,姓氏,电话等。如果我有3个匹配,他们都是顺序显示。然后我搞砸了。 lastnametelephone对象似乎是多余的,并且它们旁边没有任何内容。此外,没有任何值在屏幕上显示为选项。但是,有三个选项显示找到的3个对象。我的select:function(event, ui)也不起作用。我已经阅读了100次文档,我没有快速到达任何地方。

如果你能帮助它开展工作,我会非常感激,但也要非常感谢解释我做错了什么。 TKS!

Javascript:

 $('#customer').autocomplete({
    minLength: 2,
    source: function(request, response,term) {
        var param = request.term;
        $.ajax({
            url: "quotes/customer_search/"+param,
            dataType: "json",
            type:"GET",
            success: function (data) {
                response($.map(data, function(item) {
                    return {
                        firstname:item.firstname1,  // My objects appear here. 
                        lastname:item.lastname1, // these are redundant
                        telephone:item.telephone1, // redundant
                    };
                }));//END Success
            },
        });//END AJAX
    },

    select: function( event, ui ) {
        log( ui.item ?
        "Selected: " + ui.item.firstname + " " + ui.item.lastname :
        "Nothing selected, input was " + this.value );


    }

HTML

<div class="ui-widget">
    <label for="customer">Birds: </label>
    <input id="customer" class="ui-autocomplete-input" >
</div>

<div class="ui-widget" style="margin-top:2em; font-family:Arial">
    Result:
    <div id="log" style="height: 200px; width: 300px; overflow: auto;" class="ui-widget-content"></div>
</div>

1 个答案:

答案 0 :(得分:0)

我找到了一个帮助我解决问题的答案:

How to use JQuery Map

有一次,我已经意识到我的响应对象的语法需要更改为下面的代码。一旦改变一切正常。

success: function (data) {
                response($.map(data, function(item,customer) {

                    return  [item.firstname1+' '+item.lastname1+' '+item.telephone1]

                }));//END Success
            },