首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用source: function()...和JQuery UI autocomplete中的AJAX

如何使用source: function()...和JQuery UI autocomplete中的AJAX
EN

Stack Overflow用户
提问于 2014-01-28 00:18:03
回答 7查看 254.9K关注 0票数 81

我需要一点关于JQuery UI自动完成的帮助。我希望我的文本字段(.suggest-user)显示来自AJAX请求的名称。这就是我所拥有的:

代码语言:javascript
复制
jQuery("input.suggest-user").autocomplete({
    source : function(request, response) {
        var name = jQuery("input.suggest-user").val();
        jQuery.get("usernames.action?query=" + name, function(data) {
            console.log(data);  // Ok, I get the data. Data looks like that:
            test = data;        // ["one@abc.de", "onf@abc.de","ong@abc.de"]
            return test;        // But what now? How do I display my data?
        });
    },
    minLength : 3
});

任何帮助都是非常感谢的。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2014-01-28 00:20:54

在AJAX回调中,需要调用response函数;传递包含要显示的项的数组。

代码语言:javascript
复制
jQuery("input.suggest-user").autocomplete({
    source: function (request, response) {
        jQuery.get("usernames.action", {
            query: request.term
        }, function (data) {
            // assuming data is a JavaScript array such as
            // ["one@abc.de", "onf@abc.de","ong@abc.de"]
            // and not a string
            response(data);
        });
    },
    minLength: 3
});

如果响应JSON与AJAX UI autocomplete接受的格式不匹配,那么在将结果传递给响应回调之前,必须在jQuery回调中对其进行转换。See this question and the accepted answer

票数 160
EN

Stack Overflow用户

发布于 2014-01-28 13:57:24

试试这段代码。您可以使用$.get而不是$.ajax

代码语言:javascript
复制
$( "input.suggest-user" ).autocomplete({
    source: function( request, response ) {
        $.ajax({
            dataType: "json",
            type : 'Get',
            url: 'yourURL',
            success: function(data) {
                $('input.suggest-user').removeClass('ui-autocomplete-loading');  
                // hide loading image

                response( $.map( data, function(item) {
                    // your operation on data
                }));
            },
            error: function(data) {
                $('input.suggest-user').removeClass('ui-autocomplete-loading');  
            }
        });
    },
    minLength: 3,
    open: function() {},
    close: function() {},
    focus: function(event,ui) {},
    select: function(event, ui) {}
});
票数 33
EN

Stack Overflow用户

发布于 2014-01-28 12:43:56

代码语言:javascript
复制
$("#id").autocomplete(
{
    search: function () {},
    source: function (request, response)
    {
        $.ajax(
        {
            url: ,
            dataType: "json",
            data:
            {
                term: request.term,
            },
            success: function (data)
            {
                response(data);
            }
        });
    },
    minLength: 2,
    select: function (event, ui)
    {
        var test = ui.item ? ui.item.id : 0;
        if (test > 0)
        {
           alert(test);
        }
    }
});
票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21385892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档