2011-07-13 2 views
17

jQuery UIのオートコンプリートのバージョン1.8.13を使用しています。デフォルトでは、jQueryはデフォルトで「?term =」のクエリパラメータを使用しています。 "それは作成している文字列内にあります。変数をバックエンドの "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

"search"メソッドはすでに検索語を保存していますので、(入力の)値を変更するのは遅すぎます。 –

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); 
    }; 
関連する問題