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,因此在准备好函数中初始化自动完成后,添加以下代码:

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 回答