以下是我尝试appendTo
使用带有AJAX源的jQuery自动完成功能的尝试。
我有多个问题,希望能帮助许多正在努力理解使用AJAX源实现自动完成的正确方法的人。
1)source: function(request, response) {...}
这是做什么的?为什么需要它。
2)以什么格式function(data){ response($.map (data, function(obj) {
返回数据?我意识到数据是JSON格式的,但是有什么意义.map
呢?是否有必要这样做?有好处吗?
3a)使用appendTo
和时renderItem
,是否必须success
返回上述数据?
3b)或者根据上述数据,如何正确使用appendTo和renderItem更改检索到的值的格式和显示?
$(function() {
$( ".find_group_ac" ).autocomplete({
minLength: 1,
source: function(request, response) {
$.ajax({
url: "welcome/search/",
data: { term: $(".find_group_ac").val()},
dataType: "json",
type: "POST",
success: function(data){ response($.map
(data, function(obj) {
return {
label: obj.name + ': ' + obj.description,
value: obj.name,
id: obj.name
};}));}
});
}
}).data( "autocomplete" )._renderItem = function( ul, item ) {
return $( "<li></li>" )
.data( "item.autocomplete", item )
.append( "<a>" + item.label + "<br>" + item.desc + "</a>" )
.appendTo( ul );
};
});
这似乎需要回答很多,但我相信这对许多javascript新手,甚至对我自己都是有价值的。
source: function(request, response) {...}
这是做什么的?为什么需要它。
由于您正在执行自定义AJAX POST以获取数据,因此必须指定一个函数,该函数response
使用所需的自动完成候选者来调用回调。
在最简单的用例中,您只需为source
参数提供一个字符串,小部件将针对带有附加的URL发出GET请求?term=(term)
。由于您要执行POST并发送不同的术语,因此必须使用的功能版本source
。
PS:您应该提供$.ajax
呼叫request.term
而不是$(".find_group_ac").val()
function(data){response($。map(data,function(obj){返回的数据是什么格式?我知道数据是JSON格式的,但是.map的意义是什么?有必要这样做吗?有好处吗?
自动完成小部件期望数组数据源的项目满足以下要求之一:
label
属性value
,,属性或两者兼有的对象。考虑到这一点,如果您正在使用 未
以这种方式格式化JSON的服务器端资源,则必须在将数据提供给response
函数之前转换数据以符合那些规范。常用的方法是使用$.map
,它在数组上进行迭代并转换每个元素。
使用
appendTo
和时renderItem
,是否必须返回上述成功数据?
不,但是它们经常一起使用。
假设您有一个额外的属性(如description
)要显示在候选列表中。在这种情况下,您可以将服务器端结果转换为自动完成期望的格式(包括label
和value
仍然包括description
),但是您也想显示该description
属性。在这种情况下,您需要重载_renderItem
。
或者根据上述数据,如何正确使用appendTo和renderItem更改检索值的格式和显示?
如果在此答案中可以充分回答以上问题,那么我需要做的就是发布一些将这些概念整合在一起的代码:
$( ".find_group_ac" ).autocomplete({
minLength: 1,
source: function(request, response) {
$.ajax({
url: "welcome/search/",
data: { term: $(".find_group_ac").val()},
dataType: "json",
type: "POST",
success: function(data) {
response($.map(data, function(obj) {
return {
label: obj.name,
value: obj.name,
description: obj.description,
id: obj.name // don't really need this unless you're using it elsewhere.
};
}));
}
});
}
}).data( "autocomplete" )._renderItem = function( ul, item ) {
// Inside of _renderItem you can use any property that exists on each item that we built
// with $.map above */
return $("<li></li>")
.data("item.autocomplete", item)
.append("<a>" + item.label + "<br>" + item.description + "</a>")
.appendTo(ul);
};
jQueryUI文档页面上有关自动完成的示例实际上相当广泛,可能会有所帮助。具体来说,请务必签出:
问题内容: 我已经看到许多有关通过JSON传递带有标签和值属性的数组的问题,但关于传递字符串的问题并不多。我的问题是我似乎无法填写自动填充内容。我运行了一个转储函数,并通过JSON将这些样本值传递给自动完成功能: 这是一些代码: 这是fill_id.php: 我的自动完成功能保持空白。如何更改JSON数组以填充它?还是我的ajax成功函数中包含什么? 问题答案: 您可以非常坚持jQueryUI的自
本文向大家介绍jQuery实现用户输入自动完成功能,包括了jQuery实现用户输入自动完成功能的使用技巧和注意事项,需要的朋友参考一下 利用jQuery UI中Auto-complete插件实现输入自动完成功能,大家在使用诸如淘宝、京东等电商平台搜索商品时,往往只要输入商品的一些特殊字符,就可以显示出和该字符相近的列表菜单,用户使用鼠标或者键盘方向键就可以快速选择,实现了很好的用户体验。 1.最简
问题内容: 也许您可以解决一些Ajax问题。 我有AUTO COMPLETE代码-我输入城市名称,该代码会自动为我完成城市名称,还获取城市ID,并应将其放入隐藏的输入字段中(名称=“ cityID”)…但它没有做到这一点。 你能告诉我为什么吗? html代码: 服务器端(仅输出): 脚本: 您可以在这里找到完整的JS: 问题答案: 尝试对ajax_response_city使用div而不是span
问题内容: 我需要有关JQuery UI自动完成功能的帮助。我希望我的文本字段()显示来自AJAX请求的名称。这就是我所拥有的: 很感谢任何形式的帮助。 问题答案: 在您的AJAX回调内部,您需要调用该函数;传递包含要显示项目的数组。 如果响应JSON与jQueryUI自动完成功能接受的格式不匹配,则必须在将结果传递给响应回调之前在AJAX回调内部转换结果。
我想实现一个自动完成功能。目前我有一个包含JTextField的JPanel,当用户开始键入时,会出现一个包含几个选项的autocomplete(JPopupMenu)。 问题是它占用了文本字段的焦点,用户无法再键入。当我将焦点返回到文本字段时,用户不再有选项之间的导航(使用向上和向下按钮)。此外,对菜单的焦点不允许我截取它的KeyListener(不知道为什么),并且当我尝试处理文本字段端的输入
本文向大家介绍jquery ajax实现文件上传功能实例代码,包括了jquery ajax实现文件上传功能实例代码的使用技巧和注意事项,需要的朋友参考一下 下面看下ajax实现文件上传 没有使用插件 一、单文件上传 二、多文件上传 这个是多选上传,关键是multiple="multiple"这个属性,另外使用的接口也是多文件上传的接口。 当然也可以使用单文件上传的模式,多次选择就可以了,只