Javascript 如何在实时ajax搜索栏上停止输入重置

Javascript 如何在实时ajax搜索栏上停止输入重置,javascript,ajax,Javascript,Ajax,我试图在keyup事件上制作一个实时的ajax搜索栏 当我键入一个字符时,页面将更改url并重置输入文本。当我写入更多字符时,如何防止页面刷新 <script type="text/javascript"> function getSearch(str){ var u = document.getElementById("search").value; if(str.length == 0){ status.inn

我试图在keyup事件上制作一个实时的ajax搜索栏

当我键入一个字符时,页面将更改url并重置输入文本。当我写入更多字符时,如何防止页面刷新

<script type="text/javascript">

    function getSearch(str){


        var u = document.getElementById("search").value;
        if(str.length == 0){
            status.innerHTML =  'field is empty';
        }
        if(u != "") {

            se.onreadystatechange = function(){
                if (se.readyState == 4 && se.status == 200){
                    status.innerHTML = se.responseText;
                }
            }

         }
     }
</script>

函数getSearch(str){
var u=document.getElementById(“搜索”).value;
如果(str.length==0){
status.innerHTML='字段为空';
}
如果(u!=“”){
se.onreadystatechange=函数(){
如果(se.readyState==4&&se.status==200){
status.innerHTML=se.responseText;
}
}
}
}

您的ajax请求缺少一些配置。您需要告诉请求本身它应该调用哪个url,并指定方法。只需更改这些行:

status.innerHTML = 'Verifying...';
//window.location.replace("search.php?search="+str);
// this is why your page reloads. you want to remove this
var se = new XMLHttpRequest();
se.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
se.onreadystatechange = function(){
    if (se.readyState == 4 && se.status == 200){
        status.innerHTML = se.responseText;
    }
}
se.open('POST',"search.php?search="+str);
// you need to open the request, specifying the method and the url
se.send();

这里有一个有趣的

@LelioFaieta,你对ajax还不清楚。即使页面重新加载,也会出现ajax请求。页面是否重新加载与此无关。AJAX本身就是AJAX。是的,我试过了,但问题是在旧页面的上方出现了一个新页面,这就是为什么我将window.location.replace(“search.php?search=“+str”);代替se.open('POST',“search.php?search=“+str”);这意味着您的
var status=document.getElementById(“内部”)使用的元素太宽。确保选择要替换内容的元素,并确保
search.php
只返回所需的html,而不是包含
的整个html页面