javascript函数似乎没有调用

时间:2014-12-07 14:23:14

标签: javascript ajax search dynamic

我正在创建一个AJAX动态搜索栏,它返回数据库的结果。我发现当我打开调试器时,代码不会进入函数 handleSuggest() ,它会设置显示结果的div的内部html。这是我的代码。

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 = '';
}

1 个答案:

答案 0 :(得分:2)

问题出在这一行:

search.onreadystatechange.handleSearchSuggest();

search.onreadystatechange需要分配一个回调函数。

将其更改为以下内容:

search.onreadystatechange = handleSearchSuggest;

请注意,这不会调用handleSearchSuggest函数,因为onreadystatechange需要回调函数而不是函数的结果。