在ajax请求期间取消经典Ajax

时间:2014-01-09 00:43:49

标签: javascript ajax

    function submitLogin(){
        var username = document.getElementById('username').value;
        var password = document.getElementById('password').value;
        var testlabel = document.getElementById('testlabel').value;
        var postStr = "username=" + username + "&password=" + password + "&testlabel=" + testlabel;

        if (window.XMLHttpRequest) {
            xmlhttp = new XMLHttpRequest();
        } else {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }

        xmlhttp.onreadystatechange = function() {
            if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                document.getElementById('mainPage').innerHTML = xmlhttp.responseText;//ATTENTION1
            } else {
                document.getElementById('mainPage').innerHTML = "Logining......";//ATTENTION2
            }
        }
        xmlhttp.open("POST", "loginto.php", true);
        xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
        xmlhttp.send(postStr);

}

这些是我的代码。 如果我在// ATTENTION2中将“mainPage”更改为其他内容,页面将自动发送“GET”方法,但如果我仍然使用“mainPage”,则没有问题。

但是,如果我将“mainPage”更改为// ATTENTION1中的其他内容,则post方法没有问题,响应的内容可以正确显示。

那么,有什么解决方案吗?谢谢!

1 个答案:

答案 0 :(得分:0)

“别的东西”是什么意思?您需要在页面中拥有一个元素的id,其中将呈现来自ajax响应的内容。

例如,如果您有

<div id="myID"></div> 

在页面的某个地方,将// ATTENTION1中的'mainPage'更改为'myID',然后来自ajax请求的响应将放在该div中。

您在// ATTENTION2中所做的更改是针对中间状态的,因为它位于“else”上,因此不会影响ajax请求完成时发生的情况。