2012-05-31 36 views
0

嘿我在我的GAE應用程序中使用Ajax的自動完成的jQuery由Tomas(http://www.devbridge.com/projects/autocomplete/jquery/)。我有一個城市搜索模塊,其中在城市中的人鍵和城市名稱的列表來選擇從出現在下拉列表中。我按照自動完成庫的要求返回json響應。我可以在下拉菜單中顯示的城市名單下來,但是我想,因爲他從列表中選擇一個選項,用戶被重定向到一個特定的URL。我還返回一個數據對象,這是json結果中的一個可選參數。所以現在有三件事我回來了。Ajax的自動完成的jQuery:ONSELECT功能重定向到URL

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)如何訪問在具有其中用戶選擇和將用戶重定向到該網址的關鍵字典網址的價值?

2)如果我只是通過網址在「數據」對象列表中我將能夠正確的名稱鏈接到正確的網址是什麼?

3)此外,有沒有一種方式,我可以證明,如果有在建議名單沒有結果「找不到相符」?

回答

0

對不起很容易,因爲改變:

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

data.append(url) 

並添加以下的JS配置:

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