我目前正在为我的网站实施一个自动填充模块,用于解析Weather Underground的天气信息
$(function(request) {
var cities = []; // setup empty array
$.ajax({
url : "http://autocomplete.wunderground.com/aq?",
query : request.term,
dataType : "json",
success : function(parsed_json) {
for(i = 0; i < parsed_json['RESULTS'].length; i++) {
cities.push(parsed_json['RESULTS'][i]['name'])
}
}
});
$( "#tags" ).autocomplete({
source: cities
});
});
基本上,当用户在搜索查询中键入时,我会使用城市名称填充一个名为cities
的数组,它会向Weather Underground的自动完成API发送请求。
使用变量query : request.term
,我尝试将键值query=[search term]
追加到url
的末尾。但是,当我检查控制台时,似乎request.term
始终为空。
我的问题是 - 为什么我的输入参数为空文本框?
文本框“id
为tags
。
答案 0 :(得分:1)
您需要在页面加载时初始化窗口小部件,然后在键入时更新其数组。由于ajax是异步的,因此您需要更新成功回调
中的自动完成数组$(function () {
var $input = $('#tags');
$input.autocomplete({
source: [] // Initially empty
}).on('input', function () {
$.ajax({
url: "http://autocomplete.wunderground.com/aq?",
data: { "query": $input.val() },
dataType: "json",
success: function (parsed_json) {
var cities = [];
console.log(parsed_json);
for (i = 0; i < parsed_json['RESULTS'].length; i++) {
cities.push(parsed_json['RESULTS'][i]['name'])
}
$input.autocomplete('option', 'source', cities);
}
});
});
});
这是一个小提琴:http://jsfiddle.net/d8zxhq2b/
答案 1 :(得分:1)
&#34;请求&#34;必须与&#34; source&#34;一起使用自动完成的对象。
以下是一个例子:
"awesome_news_android"
希望它有所帮助。