繁体   English   中英

jQuery自动完成不起作用-没有搜索结果

[英]Jquery autocomplete not working - No search result

我正在ajax调用中创建一个国家列表,该国家列表是一个对象数组:

$.ajax({
    url: '//maps.googleapis.com/maps/api/geocode/json?address=' + zipCode + '&region=AT',
    type: 'GET',
    dataType: 'json',
    success: function (res){
        var countryList = [];

        ... ...
        ... ...

        countryList.push({
            label: countryCode + ' ' + countryName,
            value: result[0]['id'],
            countryId: result[0]['id'],
            countryCode: countryCode,
            countryName: countryName,
            city: city
        });

        zipCodeSelector.autocomplete({
            source: countryList
        });

    }

})

自动完成的响应是

没有搜寻结果

对象看起来像这样:

[Object]
0: Object
    city: "Berlin"
    countryCode: "DE"
    countryId: "a7c40f631fc920687.20179984"
    countryName: "Germany"
    label: "DE Germany"
    value: "a7c40f631fc920687.20179984"

我在ajax中调用自动完成功能。 这是一个问题还是还有其他问题?

您可以在source选项中调用ajax方法,而不是在数组之前填充。

source选项接受自定义函数,请参见:

功能:第三个变体是回调,提供了最大的灵活性,可用于将任何数据源连接到自动完成。 回调有两个参数:具有单个term属性的请求对象,该对象引用文本输入中当前的值。 例如,如果用户在城市字段中输入“ new yo”,则“自动完成”字词将等于“ new yo”。 响应回调,它需要一个参数:向用户建议的数据。 该数据应根据提供的术语进行过滤,并且可以采用上述针对简单本地数据描述的任何格式。 提供自定义源回调以处理请求期间的错误时,这一点很重要。 即使遇到错误,也必须始终调用响应回调。 这样可以确保小部件始终具有正确的状态。 在本地过滤数据时,可以使用内置的$ .ui.autocomplete.escapeRegex函数。 它只需要一个字符串参数,并转义所有正则表达式字符,因此可以安全地将结果传递给新的RegExp()。

码:

$("#autocomplete").autocomplete({
    source: function (req, resp) {
        $.ajax({
            url: '//maps.googleapis.com/maps/api/geocode/json?latlng=55.397563, 10.39870099999996&sensor=false',
            type: 'GET',
            dataType: 'json',
            success: function (res) {
                resp($.map(res.results, function (item) {

                    return {
                        label: item.formatted_address,
                        value: item.place_id
                    };
                }));
            }

        })
    }
});

演示: http//jsfiddle.net/vzhjstuf/

尝试像这样访问您的JSON内容,因为您在ajax调用上指定了期望res上的JSON格式的数据。

要访问JSON的属性,请执行以下操作,然后将其推送到另一个数组。

res[0].city;
res[0].countryCode;

对象规则的访问属性为:

Object.property

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM