0

我有这个 JavaScript 代码来搜索我的数据库并显示结果。我想在获取结果时显示一条消息“请稍候.. ”。我已经在第 3 行(从最后)写了。

我的意思是,我想在获取结果时在我的搜索结果 div 中显示“请稍候... ”消息。但它没有显示任何消息。

function ajaxFunction(e) {
    function r() {
        if (t.readyState == 4) {
            document.getElementById("search-results").innerHTML = t.responseText;
            document.getElementById("msg").style.display = "none"
        }
    }
    var t;
    try {
        t = new XMLHttpRequest
    } catch (n) {
        try {
            t = new ActiveXObject("Msxml2.XMLHTTP")
        } catch (n) {
            try {
                t = new ActiveXObject("Microsoft.XMLHTTP")
            } catch (n) {
                alert("Your browser does not support AJAX!");
                return false
            }
        }
    }
    var i = "search.php";
    i = i + "?name=" + e;
    i = i + "&sid=" + Math.random();
    t.onreadystatechange = r;
    t.open("GET", i, true);
    t.send(null);
    document.getElementById("msg").innerHTML = "Please Wait ...";
    document.getElementById("msg").style.display = "inline"
}

问题解决了

更新。

我只想在输入达到 10 个字符时才做这项工作。

代码

<input type="text" name="name" maxlength="10" id="name" onkeyup="ajaxFunction(this.value);" />
4

2 回答 2

1

好吧,您还可以尝试在调用 ajax 函数之前显示一个显示,并在 ajax 请求已经完成时隐藏它

 //show the message
 document.getElementById("msg").style.display = "inline" 
 //call the ajax function
 ajaxFunction(e); 
于 2013-05-15T07:02:57.493 回答
0

认为您需要在 r() 中添加一些东西:

if (t.readyState == 4) {
            document.getElementById("search-results").innerHTML = t.responseText;
            document.getElementById("msg").style.display = "none"
        }

if (t.readyState == 1 ||t.readyState == 2 ||t.readyState == 3) {         
            document.getElementById("msg").style.display = "block";
        }

....以便在连接/接收/处理时显示。您之前可能没有隐藏它,但后续请求的任何消息都不会显示

于 2013-05-15T07:21:52.513 回答