首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用amplifyjs自动完成

使用amplifyjs自动完成
EN

Stack Overflow用户
提问于 2011-11-24 21:30:27
回答 2查看 264关注 0票数 1

我正在尝试使用jqueryui autocmplete和amplifyjs。这是为了能够在对真实服务器数据的调用和一些硬编码的调用之间进行切换,并获得额外的灵活性。

现在,我不知道如何让jqueryui自动完成调用amplify来刷新自身并执行搜索。我有以下代码片段:

代码语言:javascript
复制
amplify.request.define('resId', 'ajax', {
                                url: 'autocmpleteUrl',
                                dataType: "json",
                                type: "POST"
                            });
$(elementId).autocomplete({
                    minLength: 1,
                    source: 'some url',
                    delay: 0,
                    focus: function (event, ui) {
                        $(elementId).val(ui.item.label);
                        return false;
                    },
                    select: function (event, ui) {
                        $(elementId).val(ui.item.label);
                        return false;
                    }
                }).data("autocomplete")._renderItem = function (ul, item) {
                    return $("<li></li>")
                        .data("item.autocomplete", item)
                        .append("<a>" + item.label + "</a>")
                        .appendTo(ul);
                };

我知道在自动补全部分,它可以是url和json数据。但是我不知道如何让它处理amplify,如果用户输入文本,jquery自动完成请求amplify,而不是url本身。有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-28 21:24:04

这接近于您想要的结果,但是您忘记了将搜索词传递给您的请求。你的代码应该是:

代码语言:javascript
复制
$( elem ).autocomplete({
    source: function( request, response ) {
        amplify.request( "resId", request, function( data ) {
            response( data );
        });
    });
});

它将把搜索项作为term查询参数发送。由于您正在执行数据的直接直通,因此也可以减少此操作:

代码语言:javascript
复制
$( elem ).autocomplete({
    source: function( request, response ) {
        amplify.request( "resId", request, response );
    });
});

然而,在这两种情况下,您都没有处理错误,这意味着您可以无限期地让自动完成处于搜索状态。您应该使用完整的amplify.request表单来处理错误:

代码语言:javascript
复制
$( elem ).autocomplete({
    source: function( request, response ) {
        amplify.request({
            resourceId: "resId",
            data: request,
            success: response,
            error: function() {
                response( [] );
            }
        });
    });
});
票数 2
EN

Stack Overflow用户

发布于 2011-11-24 23:51:05

我已经完成了以下解决方案:

代码语言:javascript
复制
autocomplete({
              source: function(request, response){
              amplify.request('resId', function(data){
                      response(data);
                    });
              },

因此,您可以向jquery.ui autocomplete提供一个函数,在此函数中,只需设置请求对象,autocomplete数据将由您提供的数据填充。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8257866

复制
相关文章

相似问题

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