我在ajax调用中创建了一个国家/地区列表,它是一个对象数组:
$.ajax({
url: '//maps.googleapis.com/maps/api/geocode/json?address=' + zipCode + '®ion=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中调用自动完成功能。这是一个问题还是还有别的东西?
答案 0 :(得分:1)
您可以在source选项中调用ajax方法,而不是在数组之前填充。
source
选项接受自定义函数,请参阅:
功能:第三个变体,一个回调,提供最多 灵活性,可用于连接任何数据源 自动完成。回调有两个参数:一个请求对象,带有 单个术语属性,指的是当前的值 文字输入。例如,如果用户输入" 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
};
}));
}
})
}
});
答案 1 :(得分:0)
尝试访问这样的JSON
内容,因为您在ajax
调用时指定了JSON
格式的资源。
要访问JSON
的属性,请执行以下操作,然后将其推送到另一个阵列。
res[0].city;
res[0].countryCode;
对象规则的访问属性是:
Object.property