javascript - ReadyState不会变成4

标签 javascript ajax search readystate

我正在尝试创建一个与我的数据库通信的动态 AJAX 搜索栏。这是我的代码。

function getXmlHttpRequestObject(){
if(window.XMLHttpRequest){
    return new XMLHttpRequest();
}
else if (window.ActiveXObject){
    return new ActiveXObject("Microsoft.XMLHTTP");
}
else{
    alert("Your browser does not support our dynamic search");
}
}

var search = getXmlHttpRequestObject();

function ajaxSearch(){
    if (search.readyState == 4 || search.readyState == 0){
        var str = escape(document.getElementById('searchBox').value);
        search.open("GET", 'searchSuggest.php?search=' + str, true);
        search.onreadystatechange.handleSearchSuggest;
        search.send(null);
    }
}

function handleSearchSuggest(){
    if(search.readyState == 4){
        var ss = document.getElementById('ajaxSearch');
        ss.innerHTML = '';
        var str = search.responseText.split("\n");
        for(i=0; i<str.length-1; i++){
            var suggestion = '<div onmouseover="javascript:suggestOver(this);"';
            suggestion += 'onmouseout="javascript.suggestOut(this);"';
            suggestion += 'onclick="javascript:setSearch(this.innerHTML);"';
            suggestion += 'class="suggestLink">' + str[i] + '<div>';
            ss.innerHTML += suggestion;
        }
    }
}

function suggestOver(divValue){
    divValue.className = "suggestLink";
}

function suggestOut(divValue){
    divValue.className = "suggestLink";
}

function setSearch(x){
    document.getElementById('searchBox').value = x;
    document.getElementById('ajaxSearch').innerHTML = '';
}

问题在于readyState从0变为1,但随后不会变为任何其他状态。我需要将其更改为 4 才能进入函数 handleSearchSuggest()。 我还在控制台中收到此错误: 类型错误:search.onreadystatechange为空

最佳答案

需要正确设置回调函数。

search.onreadystatechange = handleSearchSuggest;

请注意,就绪状态 1 表示OPENED,4 表示DONE。您可以通过 XMLHttpRequest 类的属性对此进行测试:

XMLHttpRequest.UNSENT == 0
XMLHttpRequest.OPENED == 1
XMLHttpRequest.HEADERS_RECEIVED == 2
XMLHttpRequest.LOADING == 3
XMLHttpRequest.DONE == 4

关于javascript - ReadyState不会变成4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27361018/

相关文章:

javascript - 适用于 Azure OAuth 的 ADAL - 使用 POST 重定向

javascript - 减少 Highcharts 中点之间的距离

c# - 包含半个元组

mysql - 学习SQL : Query for rows in diff tables based on if a column value is set

javascript - AJAX/ Spring MVC : JSON Object rendering in bracket notation in POST request

android - 如何实现多级可扩展 ListView 搜索功能?

javascript - 如何使用 CSS 和 javascript 使 HTML 在打印 View 上完美呈现?

javascript - Web 组件可以处理 CSS(cssChangedCallback 吗?)

jquery - 使用部分 View 和 Ajax 进行 ASP.NET MVC 客户端验证

javascript - 将 .ajaxComplete() 与另一个框架生成的 ajax 请求一起使用