Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 每次按键时在文本框中使用AJAX的慢速/滞后/停止搜索机制_C# - Fatal编程技术网

C# 每次按键时在文本框中使用AJAX的慢速/滞后/停止搜索机制

C# 每次按键时在文本框中使用AJAX的慢速/滞后/停止搜索机制,c#,C#,我使用ASP.NET、C#和jQuery创建了一个WebApp。webapp将搜索数据库中的记录。例如,在主页中,我将键入记录的名称,它将自动显示所有同名记录。所以基本上,每次我在文本框搜索中输入一个字符,它都会自动触发一个javascript函数,并触发一个获取数据的请求 <input size="40" id="searchTxt" name="searchTxt" type="text"/> 是否可以在另一个线程或另一个进程中分离搜索,以使搜索框中的键入平滑且不延迟或停止

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

<input size="40" id="searchTxt"  name="searchTxt" type="text"/>
是否可以在另一个线程或另一个进程中分离搜索,以使搜索框中的键入平滑且不延迟或停止

请告知

非常感谢。

您需要通过调用
$.AJAX
发出异步AJAX请求

  • 确保您的xmlhttp设置为异步,以便文档不会冻结
  • 每次按键时取消上述请求,因为您希望搜索框的最新值而不是以前的值
  • 试试这个:

    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);
         }
     });
    }
    

    你能给我介绍一个像样的样品吗。谢谢。我怎样才能每次按键都取消之前的请求?@krakat-对不起,我错过了一些东西,请再次查看修订。
    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);
         }
     });
    }