所以我用jquery做了一个自动完成。Ajax用于从远程位置获取大量xml文件。如果我搜索ex.“两个半男人”,它会用ajax进行大约16次查询(除了3次之外,每一次输入的字母,先看代码)。
我希望它在用户按下最后一个键后一秒钟执行Ajax请求,因此它将执行一个查询而不是16个查询。
因此,如果用户在上次按键事件后 1 秒之前按另一个键,则它尚不会执行查询。
<script>
$(document).ready(function(){
$('#tv_search').keydown(function(){
var search = $(this).val();
if(search.length >= 3)
{
$.ajax({
type: "GET",
url: "search.php",
data: {show : search, key : '890k4900k0ll' }
}).done(function(msg){
$('#t').html(msg);
});
}
});
});
</script>
Search for series: <input type='text' name='tv_search' id='tv_search'>
有什么想法吗?
我有一个解决方案,可以让您延迟调用的任何方法,避免重复调用,这根本不会被使用!
https://stackoverflow.com/a/30503848/1834212
要避免在每次按键时生成多个AJAX请求,请尝试使用<code>setTimeout()setTimeout()方法应该包含AJAX请求,该请求在用户按键四分之一秒(250毫秒)后执行。
如果请求可用,我也abort()
请求。
var timeOut = null,
myXHR = null;
$(document).ready(function(){
$('#tv_search').keydown(function(){
// It will clear the setTimeOut activity if valid.
if(timeOut) clearTimeout(timeOut);
var search = $(this).val();
if(search.length >= 3)
{
timeOut = setTimeout(function(){
// Cancel the last request if valid
if(myXHR) myXHR.abort();
myXHR = $.ajax({
type: "GET",
url: "search.php",
data: {show : search, key : '890k4900k0ll' }
}).done(function(msg){
$('#t').html(msg);
});
}, 250);// wait for quarter second.
}
});
});
你可以使用超时,并在每次按键时清除它:
$(document).ready(function() {
$('#tv_search').on('keyup', function() {
clearTimeout($(this).data('timer'));
var search = this.value;
if (search.length >= 3) {
$(this).data('timer', setTimeout(function() {
$.ajax({
type: "GET",
url: "search.php",
data: {
show: search,
key: '890k4900k0ll'
}
}).done(function(msg) {
$('#t').html(msg);
});
}, 1000));
}
});
});
下面的函数不能像我希望的那样工作;作为一个JS新手,我不明白为什么。 我需要它等待5秒钟,然后检查是否为。 目前,它不等待,只是立即检查。
问题内容: 我有一个搜索输入,当我输入内容时,该输入会将数据从输入发送到php文件。php文件对我的数据库进行搜索,并显示搜索选项列表。您知道,ajax风格的实时搜索。 我的问题是,如果您输入的内容非常快,即使输入了另外10个字母,它也可能只搜索前1或2个字母。这引起一些问题。 我的jQuery看起来像这样: 和 所以我很好奇,如何使脚本等到我完成输入后再运行该函数?我的逻辑是说,例如,如果200
我有一个h:inputText的问题,我不知道如何解决它。 我正在使用JSF和RichFaces开发一个xhtml页面,其中包含日历、SelectOneMenu、InputExtArea和Input等字段。在我的表单末尾,有两个按钮“打印”和“保存”。 如果其中一个字段被修改(文本、日期等),我必须禁用打印按钮。在每个字段中,我都添加了ajax事件。 例如: 如果我的日期改变了,我调用存储在bea
由于我对js和jquery相当陌生,我想知道是否可以将多个键绑定到一个事件。我尝试了、和,但没有运气。 我希望将和绑定在一个大小写中,而不是另一个大小写。
问题内容: 我有一个ajax调用到一个php文件。我正在收到结果。现在,我正在研究是否有可能使ajax请求每1秒自动执行一次。我将结果发布到名为的输入字段中。如何每三秒钟执行一次ajax调用而不必调用该函数? 问题答案: 您可能要考虑的是服务器发送事件(SSE) 这是一种HTML5技术,JavaScript可以通过该技术“ 长期轮询 ”服务器端点(您的PHP文件)以查看是否发生了任何更改。长轮询基
问题内容: 我有多个ajax查询同时运行,我希望它们等待最后一个返回,然后在所有ajax调用上运行成功处理程序。作为简化示例,请考虑: 假设所有请求都同时发送。由于它们是异步的,因此它们将在不同的时间返回。假设一个请求返回需要100毫秒,而另一个请求则需要3000毫秒。我显然不知道哪个会最先返回。他们都以某种方式更新了DOM,我希望一次将这些更改一次全部显示给查看器。我该怎么做呢? 我能想到的最好