微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

jQuery UI Autocomplete JSON给出错误:Uncaught TypeError:无法使用’in’运算符来搜索’62’

我在使用自动填充功能在我的页面上工作时遇到了很多麻烦.当我在搜索输入中输入2个字符(“OW”)时,我得到预加载器图像(见下文),但它永远不会消失,我从未得到自动完成弹出窗口.查看Chrome中的控制台显示
Uncaught TypeError: Cannot use 'in' operator to search for '62' in [{"value":103,"label":"FLOWER"},{"value":105,"label":"YELLOW"}]

以下是要返回的实际字符串(通过在成功块中添加警报(数据)来确认):

[{"kwrdID":103,"kwrdKeyWord":"FLOWER"},{"kwrdID":105,"kwrdKeyWord":"YELLOW"}]

这是自动完成的主要代码

$("#searchInput").autocomplete({
source: function (request,response) {
    $.ajax({
        url: '@Url.Action("GetKeywords","Home")',dataType: "json",data: {
            SearchTerm: request.term
        },success: function (data) {
            response($.map(data.keywords,function (item) {
                return {
                    label: item.kwrdKeyWord,value: item.kwrdID
                }
            }));
        }
    });
},minLength: 2
});

最后,这里是预加载器(以防它是相关的).

$(document).ajaxStart(function () {
    var position = $('#divParent').position();
    position.left += (($('#divParent').width() / 2) - ($('#preloader').width() / 2));
    position.top += (($('#divParent').height() / 2) - ($('#preloader').height() / 2));
    $('#preloader').css(position).show();
    $('#preloader').show();
}).ajaxStop(function () {
    $('#preloader').hide();
});

谁能帮忙解释一下这里发生了什么?

解决方法

这是一条漫长的道路,但经过几个小时的实验,我想出了这段代码
$("#searchInput").autocomplete({
    source: function (request,response) {
        $.ajax({
            url: '@Url.Action("GetKeywords",data: {
                SearchTerm: request.term
            },success: function (data) {
                var parsed = JSON.parse(data);
                var newArray = new Array(parsed.length);
                var i = 0;

                parsed.forEach(function (entry) {
                    var newObject = {
                        label: entry.kwrdKeyWord
                    };
                    newArray[i] = newObject;
                    i++;
                });

                response(newArray);
            },error: function (message) {
                response([]);
            }
        });
    },minLength: 2
});

这似乎工作正常.事实是我的关键字是独一无二的,所以无论如何我都可以没有身份证.

原文地址:https://www.jb51.cc/jquery/180903.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐