JQuery UI Autosuggest不会立即显示项目

时间:2011-08-18 17:40:01

标签: jquery jquery-ui

JQuery发送请求,我看到响应(通过Firebug)没有错误。但对于一个或两个字符,结果不会显示在下拉列表中。通常在键入的第二个字符上开始显示结果(我输入的速度很慢,每秒1个字符左右,只是为了测试它是否是某种速度问题)。

以下是来自firebug的req / resp的示例,此时项目未显示在页面上:

{
  "responseHeader":{
    "status":0,
    "QTime":1,
    "params":{
      "fl":"title,count",
      "sort":"count desc",
      "indent":"on",
      "start":"0",
      "q":"\"b\" AND count:[3 TO *]",
      "wt":"json",
      "rows":"5",
      "version":"2.2"}},
  "response":{"numFound":6536,"start":0,"docs":[
      {
        "title":"blood",
        "count":19890},
      {
        "title":"biochemistry",
        "count":14480},
      {
        "title":"biochemical and biophysical research communications",
        "count":6976},
      {
        "title":"businessweek",
        "count":6498},
      {
        "title":"biochimica et biophysica acta",
        "count":6226}]
  }}

同样,正如我所说,控制台在页面上没有显示错误。

有关我应该如何处理这个问题的任何想法?

Javascript代码是:

function autosuggest(term, wid)
{
    var query = "q=" + escape(term);
    var url = "/autosuggest.do?" + query;

    $.getJSON(url, function(terms)
    {
        // iterate over terms

        var list = new Array();

        if (terms.response != null && terms.response.docs != null) {
            for(var i=0; i < terms.response.docs.length; i++)
            {
                var trm = terms.response.docs[i];
                list[i] = trm.title;
            }
            $( '#' + wid ).autocomplete({source: list, select: function(event, ui) { 
                doSuggestedSearch(ui.item.value);
            }});
        }
    });
}

任何想法都会受到赞赏。

2 个答案:

答案 0 :(得分:1)

autosuggest有一个延迟选项,默认为300毫秒,您可以覆盖:

$( ".selector" ).autocomplete({ delay: 0 });

答案 1 :(得分:0)

嗯,在这个例子中似乎工作得很好:http://jsfiddle.net/william/Z7bcQ/

是否有任何并发​​请求或繁重处理?我建议你以某种方式描述你的页面并找到瓶颈。 Firebug在控制台选项卡中有profiler。 Safari还在其Web Inspector中附带了一个很好的分析器。