gpt4 book ai didi

jQuery UI 自动完成,使用来自 URL 的 JSON

转载 作者:行者123 更新时间:2023-12-03 22:31:28 24 4
gpt4 key购买 nike

我正在使用 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 作为数据源?

我尝试像这样更改源选项:

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

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

任何指针都会很棒。

最佳答案

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

  • 简单字符串,或:
  • 包含 label 的对象属性(property),a value属性(property),或两者兼而有之。

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

$("#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>当用户输入一个术语时。

关于jQuery UI 自动完成,使用来自 URL 的 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12370614/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com