【问题标题】:Ajax Autocomplete for Jquery : OnSelect Function redirect to urlJquery 的 Ajax 自动完成:OnSelect 函数重定向到 url
【发布时间】:2012-05-31 03:34:46
【问题描述】:

嘿,我在我的 GAE 应用程序中使用 Tomas (http://www.devbridge.com/projects/autocomplete/jquery/) 的 Ajax Autocomplete for Jquery。我有一个城市搜索模块,其中一个人键入一个城市,可供选择的城市名称列表出现在下拉列表中。我正在按照自动完成库的要求返回一个 json 响应。我可以在下拉列表中显示城市列表,但是我希望用户在从列表中选择一个选项时被重定向到特定的 url。我还返回一个数据对象,它是 json 结果中的可选参数。所以现在我要返回三件事。

1. 'query': 'Ade'
2. 'suggestions': ['Adelaide', 'Adelaide Hills', 'Adelia Maria']
3. 'data': [{'Adelaide': '/Oceania/Australia/Adelaide'},{'Adelaide Hills':'/Oceania/Australia/Adelaide Hills'},{'Adelia Maria':'/Oceania/Australia/Adelia Maria'}]

这是我发送 json 结果的代码:

class SearchCity(TemplateHandler):
  def get(self):
    results, data, url = [], [], ''
    word = self.request.get('query')
    search = models.City.all().filter('name >=', word.capitalize()).filter('name <', word.capitalize()     + u'\ufffd')
    for res in search:
      url = '/' + res.country.continent.name + '/' + res.country.url_name + '/' + res.name + '/'
      results.append(res.name)
      data.append({res.name:url})
    json_results = {
     'query' : word, 
     'suggestions' : results,
     'data': data
    }
  self.response.out.write(json.dumps(json_results))

这是我试图触发自动完成功能的 Javascript:

<script type="text/javascript">
  //<![CDATA[
   var a = $('#search-city').autocomplete({
     serviceUrl:'/search_city',
     delimiter: /(,|;)\s*/, // regex or character
     maxHeight:140,
     width:170,
     zIndex: 9999,
     deferRequestBy: 0, //miliseconds
     noCache: false, //default is false, set to true to disable caching
   });
  //]]>
</script>

现在根据插件作者的说法,我们可以将这样的东西用于回调函数:

// callback function:
onSelect: function(value, data){ alert('You selected: ' + value + ', ' + data); },

问题:

1.) 我如何访问具有用户选择的键的字典中 url 的值并将用户重定向到该 url?

2.) 如果我只是在“数据”对象中传递 url 列表,我是否能够将正确的名称链接到正确的 url?

3.) 另外,如果建议列表中没有结果,我是否可以显示“未找到匹配项”?

【问题讨论】:

    标签: jquery python google-app-engine autocomplete


    【解决方案1】:

    抱歉,改起来就这么简单:

    data.append({res.name:url})
    

    data.append(url)
    

    并将以下内容添加到 JS 配置中:

    onSelect: function(value, data){ window.location.replace(data); },
    

    【讨论】:

      猜你喜欢
      • 2012-05-26
      • 2016-11-08
      • 1970-01-01
      • 2018-02-16
      • 1970-01-01
      • 2013-06-02
      • 1970-01-01
      • 2014-11-22
      • 1970-01-01
      相关资源
      最近更新 更多