Javascript JQuery自动完成不显示

Javascript JQuery自动完成不显示,javascript,jquery,json,jquery-ui,Javascript,Jquery,Json,Jquery Ui,我使用JQuery UI autocomplete来减少我必须在下拉列表中显示的部分列表,我也使用json将部分列表传回,但我没有看到结果,我确信这与我对JQuery的映射功能理解有限有关 我有下面的json {"parts":[{"partNumber":"654356"},{"partNumber":"654348"},{"partNumber":"654355-6"},{"partNumber":"654355"},{"partNumber":"654357"},{"partNumber"

我使用JQuery UI autocomplete来减少我必须在下拉列表中显示的部分列表,我也使用json将部分列表传回,但我没有看到结果,我确信这与我对JQuery的映射功能理解有限有关

我有下面的json

{"parts":[{"partNumber":"654356"},{"partNumber":"654348"},{"partNumber":"654355-6"},{"partNumber":"654355"},{"partNumber":"654357"},{"partNumber":"654357-6"},{"partNumber":"654348-6"}]}
哪一个是正确的

我使用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;
    }
});

任何人能给予的任何帮助都将不胜感激。已编辑以包含Soderslat提供的帮助,jquery自动完成插件格式必须

{“查询”:“您的查询”,“建议”:[“建议1”,“建议2”],“数据”:[您的数据]}

并使用自动完成

$('#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}
            }))
    }
});

我不确定,但是parts.part不应该是数组吗

来自:

本地数据可以是一个简单的字符串数组,也可以包含数组中每个项的对象,可以是标签属性或值属性,也可以两者兼有。标签特性将显示在“建议”菜单中。在用户从菜单中选择某个内容后,该值将插入到输入元素中。如果只指定了一个属性,则它将同时用于两个属性,例如,如果只提供值属性,则该值也将用作标签


这意味着如果您使用“value”而不是“partNumber”,您应该得到您想要的信息。

我看不出您是否在使用回调,您能告诉我吗?我的眼睛有点痛我不知道你的意思,如果你是说我在使用检索到的数据,那么我相信我在成功函数中。Firebug控制台中是否显示任何错误?
response
功能是否正确解决?没有错误,但此时显示为空,即显示一个没有内容的框。回答似乎已完成并退出。2个问题,您是说我需要更改JSON的格式吗?我在autocomplete的文档中找不到您提供的选项(我可能在这里遗漏了什么)?嗯,可能是autocomplete的其他版本,我使用这个解释我使用JQuery UI autocomplete,我更新了原始问题来指定它,我正在研究您使用的插件。参见示例,json格式必须[{“id”:“Coccothraustes Coccothraustes”,“label”:“Hawfinch”,“value”:“Hawfinch”},{“id”:“Accipiter gentilis”,“label”:“Northern Goshawk”,“value”:“Northern Goshawk”},{“id”:“Accipiter nisus”,“label”:“欧亚麻雀鹰”,“value”:“欧亚麻雀鹰”},{“id”:“Surnia ulla”,“label”:“Northern Hawk Owl”,“value”:“Northern Hawk Owl”}]我已经将我的JSON格式更新为以下[{“partNumber”:“654356”},{“partNumber”:“654348”},{“partNumber”:“654355-6”},{“partNumber”:“654357”},{“partNumber”:“654357-6”},{“partNumber”:“654357-6”},{“partNumber”:“654348-6”}]但是仍然每行只输出一个字符,我用我的json代码片段升级了代码,比如so$(function(){var parts=[{“partNumber”:“654356”},{“partNumber”:“654348”},{“partNumber”:“654355-6”},{“partNumber”:“654355”},{“partNumber”:“654357”},{“partNumber”:“654357-6”},{“partNumber”:“654357-6”},{“partNumber”:“654348-6”};$“#tags”).autocomplete({source:function(request,response){response($.map(parts.part,function(item){return{label:item.partNumber}}))}});仍然没有输出:(在我的第一个JSFIDLE中,我将其更改为一个数组,新的JSFIDLE以及上面提到的新结构,我看到您的JSFIDLE可以工作,我看不到我对ajax查询返回的数据做了什么,这些数据与您的响应不同?我看到结构返回并被传递到响应函数中,但该项仍然只包含如果您的示例工作正常,那么单字符数组现在真的很混乱吗?如果我想知道脚本中的ajax部分是否没有正确地将数据传递到map函数中,如果json被解析为字符数组,这就解释了为什么每行都只有一个字符