【发布时间】:2015-02-09 04:35:45
【问题描述】:
我有一个搜索框,我想在即时输入的同时显示搜索结果;但是在快速打字时我遇到了问题。
JavaScript:
function CreateXmlHttp() {
var xmlhttp;
try {
xmlhttp = new XMLHttpRequest();
} catch (e) {
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
alert("your browser doesn't support ajax");
return false;
}
}
}
return xmlhttp;
}
function searchfunc(value) {
if (value!='') {
var xmlhttp = CreateXmlHttp();
xmlhttp.open('GET','http://example.com/ajax/instant_search.php?q='+value,true);
xmlhttp.send(null);
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
document.getElementById('search_result').innerHTML = xmlhttp.responseText+'<li><a href="http://example.com/search.php?q='+value+'">full search for <strong>'+value+'</strong></a></li>';
}
}
} else document.getElementById('search_result').innerHTML = '';
}
HTML:
<input id="search_box" type="text" placeholder="type to search..." onkeyup="searchfunc(this.value)">
<ul id="search_result"></ul>
如何在新按键时中止以前的 XMLHttpRequest?
【问题讨论】:
-
只调用它的
abort()方法? -
Aborting the xmlhttprequest 的可能重复项
-
与其放弃,为什么不先发送请求,直到用户停止输入?
-
@KevinB 我希望它是实时搜索!
-
@Bergi 我在哪里使用它?