当前位置: 首页 > 面试题库 >

jQuery UI通过URL的JSON自动完成

呼延子安
2023-03-14
问题内容

我正在使用jQuery UI自动完成功能。我可以将其与jQuery UI提供的示例一起使用,如下所示:

var availableTags = [
        "ActionScript",
        "AppleScript",
        "Asp",
        "BASIC",
        "C",
        "C++",
        "Clojure",
        "COBOL",
        "ColdFusion",
        "Erlang",
        "Fortran",
        "Groovy",
        "Haskell",
        "Java",
        "JavaScript",
        "Lisp",
        "Perl",
        "PHP",
        "Python",
        "Ruby",
        "Scala",
        "Scheme"
    ];

$("#tags").autocomplete({
    source: availableTags
});

这可以正常工作。但是我需要使用JSON作为数据源,可以像这样检索它:http://mysite.local/services/suggest.ashx?query
= ball

如果要转到该URL,我将像这样返回JSON:

 [{"id":12,"phrase":"Ball"},{"id":16,"phrase":"Football"},{"id":17,"phrase":"Softball"}]

如何使用我的URL作为数据源?

我试过像这样更改source-option:

$("#tags").autocomplete({
    source: "http://mysite.local/services/suggest.ashx"
});

但这没有帮助。我猜该服务不知道在输入字段中键入了哪个关键字左右?

任何指针都很棒。


问题答案:

您需要更改源来满足以下规范(该小部件的文档中已概述)。源必须是包含以下内容的数组(或返回包含以下内容的数组):

  • 简单字符串,或:
  • 包含一个或多个label属性的对象value

如果由于某种原因您无法更改远程源返回的内容,则可以在成功检索到数据后对其进行转换。这样做的方法如下:

$("#tags").autocomplete({
    source: function (request, response) {
        $.ajax({
            url: "http://mysite.local/services/suggest.ashx",
            data: { query: request.term },
            success: function (data) {
                var transformed = $.map(data, function (el) {
                    return {
                        label: el.phrase,
                        id: el.id
                    };
                });
                response(transformed);
            },
            error: function () {
                response([]);
            }
        });
    });
});

如您所见,您需要通过将函数传递给source小部件的选项来进行AJAX调用。

这个想法是用来$.map将您的数组转换为包含自动完成小部件可以解析的元素的数组。

还要注意,data传递给AJAX调用的参数应该?query=<term>在用户键入术语时结束。



 类似资料:
  • 通过Jenkins并行完成UI的自动化测试 原文链接 : Concurrent Android UI automation with Jenkins 原文作者 : Ha Duy Trung 译文出自 : 开发技术前线 www.devtf.cn 译者 : chaossss 校对者: tiiime 状态 : 完成 现在的 IT 公司会为了进入不同的市场开发相应的 App,来自同一家公司的 App 总会

  • 本文向大家介绍iOS UIWebView 通过 cookie 完成自动登录实例,包括了iOS UIWebView 通过 cookie 完成自动登录实例的使用技巧和注意事项,需要的朋友参考一下 1、相关介绍 iOS在UIWebView中获取的cookie的方法:NSHTTPCookieStorage * nCookies = [NSHTTPCookieStorage sharedHTTPCookie

  • 问题内容: 即时通讯在JSON中获取响应,但这不会解析JSON响应。我在做什么错?我在doc http://docs.jquery.com/Plugins/Autocomplete上找不到任何内容 问题答案: 检查dataType和parse选项。

  • 问题内容: 好吧,我一直在为此绞尽脑汁(这太糟糕了),但是我一直尝试阅读我所能而且仍然无法使它起作用的内容。 试图用jQuery UI做自动完成 我的json看起来像这样 我正在尝试将此信息用作自动完成的来源。我得到的响应对象很好,我很难以正确的格式获得它,因此我可以将“ ”放在与“值”相关联的隐藏字段中,该字段需要显示为“值”的一部分落下。 尝试了一百万种不同的方法,但最近的尝试却在下面 请多谢

  • 问题内容: 想象一个具有以下数据的json文件: 我希望使用jQuery的自动完成方法,能够将 颜色 显示为选项,以选择并在输入上插入 值 。 以上不需要介绍。用于选择颜色,具有 颜色 值和具有 值 value的选择器。 编辑: 我有此JSON数据: 和这个HTML: 而这个jQuery: 我遵循安德鲁的回答,它提示我选择数据,但是如果我发出警报和变量,它会显示“未定义”。我想念什么? Edit2

  • 问题内容: 我正在尝试找到一种将jQuery自动完成与回调源结合使用的方法,该回调源通过ajax json对象列表从服务器获取数据。 有人可以给些指示吗? 我用谷歌搜索,但找不到完整的解决方案。 问题答案: 带有源代码的自动完成文档中的完美示例。 jQuery HTML