jQuery自动完成向URL附加值

时间:2015-07-02 19:34:44

标签: javascript jquery api

我目前正在为我的网站实施一个自动填充模块,用于解析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始终为空。

我的问题是 - 为什么我的输入参数为空文本框?

文本框“idtags

2 个答案:

答案 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"

希望它有所帮助。