每次按键时,在文本框中使用AJAX缓慢/滞后/停止搜索机制

时间:2011-07-06 01:46:25

标签: c#

我使用ASP.NET,C#和jQuery创建了一个webbapp。 webapp将搜索数据库中的记录。例如在主页面中,我将键入记录的名称,它将自动显示具有相同名称的所有记录。所以基本上,每次我在文本框搜索中输入一个字符时,它都会自动触发一个javascript函数,并触发一个获取数据的请求。

<input size="40" id="searchTxt"  name="searchTxt" type="text"/>

以下是jQuery和javascript函数

$('searchTxt').bind('keyup', function() {
    var txt = $('#searchTxt').val();
    xmlhttp.open("POST","/Search/?srch="+txt,false);    
    xmlhttp.send();
    document.getElementById("Show").innerHTML=xmlhttp.responseText;
});

是否可以将搜索在另一个线程或另一个进程中分开,以便在搜索框中输入是平滑的而不是滞后或停止。

请告知。

非常感谢。

2 个答案:

答案 0 :(得分:1)

您需要通过调用$.ajax来制作异步 A JAX请求。

答案 1 :(得分:1)

  1. 确保将xmlhttp设置为异步,以便文档不会冻结。
  2. 每次按键取消前面的请求,因为您希望搜索搜索框的最新值而不是之前的值。
  3. 试试这个:

    function search()
    {
     try
     {
        xhr.abort();
        xhr = null;
     }
     catch(e)
     {
     }
     xhr = 
     $.ajax({
         type: "POST",
         url: "search.php",
         data: "keyword=" + $('#SearchBox').val(),
         success: function(Data)
         {
            /* Write result to ResultBox (div or something) */
            $('#ResultBox').html(Data);
         }
     });
    }