1

私のオートコンプリート機能は次のとおりです。

$(document).ready(function(){
  var a = $('#issued_to').autocomplete(
  {
    serviceUrl: 'http://myhost.com/ecard_emp_suggestion/',
    minChars: 1,
    delimiter: /(,|;)\s*/, // regex or character
    maxHeight: 400,
    width: 300,
    zIndex: 9999,
    deferRequestBy: 0, //miliseconds
    //params: { country:'Yes' }, //aditional parameters
    noCache: false, //default is false, set to true to disable caching
    // callback function:
    onSelect: function(value, data){ alert('You selected: ' + value + ', ' + data); },
    // local autosugest options:
    //lookup: ['January', 'February', 'March', 'April', 'May'] //local lookup values
  });
});

問題は、リクエストを次の宛先に送信することです: http://myhost.com/ecard_emp_suggestion?query=input_text

しかし、私はhttp://myhost.com/ecard_emp_suggestion/input_textが必要です

何をどこを変更すればよいですか??

4

2 に答える 2

1

要するに、主にエスケープの問題のために、それを行うべきではありません。ほとんどのバックエンドは、のような URL セグメントのランダムな文字列では機能しませんhttp://myhost/com/card_emp_suggestion/space includedソースのコールバックを許可するjquery uiプロジェクトのオートコンプリートを確認する必要があり、バックエンド呼び出しを任意の方法で実装できます。

于 2012-07-15T14:18:20.933 に答える
0

関数 getSuggestions をカスタムの関数でオーバーライドする必要があるため、ready 関数でオートコンプリートを初期化した後、次のコードを追加します。

a.getSuggestions = function(q) {
  var cr, me;
  cr = this.isLocal ? this.getSuggestionsLocal(q) : this.cachedResponse[q];
  if (cr && $.isArray(cr.suggestions)) {
    this.suggestions = cr.suggestions;
    this.data = cr.data;
    this.suggest();
  } else if (!this.isBadQuery(q)) {
    me = this;
    //me.options.params.query = q;
    //$.get(this.serviceUrl, me.options.params, function(txt) { me.processResponse(txt); }, 'text');
    $.get(this.serviceUrl + '/' + q, null, function(txt) { me.processResponse(txt); }, 'text');
  }
}
于 2012-07-15T14:16:42.573 に答える