2011-07-13 42 views
17

我使用jQuery UI的自動完成版本1.8.13,默認情況下,jQuery默認使用查詢參數「?term =」,而我的應用程序使用「?q = 「在它創建的字符串中。我可以將變量更改爲後端的「term」,但我寧願只告訴jQuery服務器試圖發送的內容。有沒有辦法改變這個?更改jQuery UI自動完成的查詢參數

現在我只是有這樣的事情,如果我在後端將變量更改爲「term」,但正如我所說我想將其更改爲「q」,並且我無法在網上找到任何信息有關設置參數(的作品):

$("#input-search").autocomplete({ 
    source: "/search/autocomplete/" 
}); 

回答

25

您可以使用callback form of source,並處理所有與服務器自己的相互作用。事情是這樣的:

$("#input-search").autocomplete({ 
    source: function(request, response) { 
     $.get('/search/autocomplete', { q: request.term }, function(data) { 
      response(data.split('\n')); 
     }); 
    } 
}); 
+0

我不需要.split('\ n') - 它已經是一個數組 –

+0

值得注意的是,你實際上也可以使用源代碼更改搜索詞(我使用額外字符清理電子郵件地址)。 「搜索」方法已經保存了搜索詞,因此改變那裏的值(在輸入中)爲時已晚。 –

11

上面的答案是一個偉大的簡單的例子,幫助我對我的應用程序這一結果產生從中顯示自動完成結果的響應數據的無序列表:

$("#input-search").autocomplete({ 
    source: function(request, response) { 
     $.ajax({ 
     url: "/search/autocomplete", 
     dataType: "json", 
     data: { 
      q: request.term 
     }, 
     success: function(data) { 
      response(data); 
     } 
     }); 
    }, 
}).data("autocomplete")._renderItem = function(ul, item) { 
    $(ul).attr('id', 'search-autocomplete'); 
     return $("<li class=\""+item.type+"\"></li>") 
     .data("item.autocomplete", item) 
     .append("<a href=\""+item.url+"\">"+item.title+"</a>").appendTo(ul); 
    };