- 我的脚本 AJAX *
<script language="javascript">
function search_func(value)
{
$.ajax({
type: "GET",
url: "sample.php",
data: {'search_keyword' : value},
dataType: "text",
success: function(msg){
//Receiving the result of search here
}
});
}
</script>
中文(简体)
<input type="text" name="sample_search" id="sample_search" onkeyup="search_func(this.value);">
***问题:***在onkeyup时我使用 AJAX 获取结果,一旦ajax结果延迟增加,我就会出现问题。
For ExampleWhile typing t
keyword I AJAX result and while typing te
I receive ajax result when ajax time delay between two keyup sometimes makes a serious problem.
当我快速输入te
时 AJAX 搜索t
关键字来晚了,当与te
比较时。我不知道如何处理这种情况。
结果由于 AJAX 延迟,快速输入te
关键字时,会出现t
关键字的结果。
我相信我已经向读者解释了知识。
6条答案
按热度按时间tyu7yeag1#
您应该检查该值是否随时间发生了变化:
编辑:
添加
searchRequest
变量是为了防止向服务器发送多个不必要的请求。mzaanser2#
保留
$.ajax()
返回的XMLHttpRequest
对象,然后在下一个keyup中调用.abort()。这应该会杀死前一个 AJAX 请求,让您执行新的请求。sg24os4d3#
尝试使用jQuery UI autocomplete。从许多低级编码中节省您。
8hhllhi24#
首先,我建议在每个keyup上进行 AJAX 调用是不好的(这就是为什么你会遇到这个问题)。
第二,如果你想使用keyup,然后显示一个加载图像后,输入框向用户显示其仍在加载(使用加载图像,就像你在添加评论)
ar7v8xwq5#
保留$. AJAX ()返回的XMLHttpRequest对象,然后在下一次keyup时调用.abort()。这应该会杀死前一个ajax请求,让您执行新的请求。
gwo2fgha6#
几个指针。首先,language是javascript的一个不推荐使用的属性。在HTML(5)中,你可以关闭该属性,或者使用type=“text/javascript”。其次,你使用的是jQuery,那么当你也可以使用jQuery时,为什么要使用内联函数调用呢?
我建议在keyup事件和调用 AJAX 函数之间留一点延迟。你可以做的是在调用ajax函数之前使用setTimeout来检查用户是否已经完成输入。