我已经使用JQuery UI自动完成功能来减少我必须在下拉列表中显示的部件列表,我也使用json来传回部件列表但我没有看到结果,我确定这与我对JQuery的Map函数的有限理解有关。
我有以下json
{"parts":[{"partNumber":"654356"},{"partNumber":"654348"},{"partNumber":"654355-6"},{"partNumber":"654355"},{"partNumber":"654357"},{"partNumber":"654357-6"},{"partNumber":"654348-6"}]}
其中JSONLint验证正确无误
我已经查看了使用Firebug的帖子和响应并看到它们是正确的但是我的自动完成似乎没有显示,我最接近这样做,当我显示整个JSON字符串时每个字符都有一条新线。
这是我的JS
$('.partsTextBox').autocomplete({
minLength: 3,
source: function(request, response) {
$.ajax({
url: './PartSearch.ashx',
data: $('.partsTextBox').serialize(),
datatype: 'JSON',
type: 'POST',
success: function(data) {
response($.map(data, function(item) {
return { label: item.partNumber }
}))
}
});
},
select: function(e) {
ptb.value = e;
}
});
任何人都可以给予任何帮助将非常感激。已编辑以包含soderslatt提供的帮助
答案 0 :(得分:1)
我不确定,但是part.part不应该是一个数组吗?
答案 1 :(得分:1)
本地数据可以是一个简单的字符串数组,也可以包含数组中每个项目的对象,带有标签或值属性或两者。 label属性显示在建议菜单中。用户从菜单中选择了某些内容后,该值将插入到input元素中。如果仅指定了一个属性,则它将用于两者,例如。如果仅提供value-properties,则该值也将用作标签。
这意味着如果你使用“value”而不是“partNumber”,你应该得到你想要的。
答案 2 :(得分:0)
jquery自动完成插件格式必须
{ “查询”: “your_query”, “建议”:[ “suggestions_1”, “suggestions_2”], “数据”:[your_data]}}
并使用
自动填充功能$('#your_input').autocomplete({
minChars: 2
, serviceUrl: './PartSearch.ashx'
, deferRequestBy: 50
, noCache: true
, params: { }
, onSelect: function(value, data) {
}
, ajaxCallBack: function() {
response($.map(data, function(item) {
return { label: item.partNumber}
}))
}
});