我想在获取结果时显示一条消息

时间:2013-05-15 06:59:05

标签: javascript html ajax

我有这个JavaScript代码来搜索我的数据库并显示结果。我想在获取结果时显示消息“ please wait .. ”。我在第3行写的(从上次开始)。

我的意思是,我想在搜索结果div中显示“ please wait ... ”消息,同时获得结果。但它没有显示任何信息。

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个字符时才能完成这项工作。

HTML CODE

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

2 个答案:

答案 0 :(得分:1)

你可以尝试的是在调用ajax函数之前显示一个显示并在ajax请求完成时隐藏它

 //show the message
 document.getElementById("msg").style.display = "inline" 
 //call the ajax function
 ajaxFunction(e); 

答案 1 :(得分: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";
        }

....以便在连接/接收/前进时显示。您之前可能没有隐藏它,但是以下请求的任何混乱都不会显示