2017-10-11 78 views
0

我想知道如何在发送后验证xmlHttp请求的状态。我该如何去做呢?谢谢。如何返回xmlHttp请求状态?

function sendRequest(){ 
    //get refresh access token 
    var accessToken = 'xxx'; 
    //get user_id 
    var userid = document.getElementById('userid').value; 
    //get request_token 
    var requestToken = document.getElementById('requestToken').value; 

    //insert database 
    var xmlHttp = new XMLHttpRequest(); 
    var url="database.php"; 
    var parameters = "accessToken=" + accessToken + "&userid=" + userid + "&requestToken=" + requestToken ; 
    xmlHttp.open("POST", url, true); 

    //send request 
    xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
    xmlHttp.setRequestHeader("Content-length", parameters.length); 
    xmlHttp.setRequestHeader("Connection", "close"); 
    xmlHttp.send(parameters); 

    //check status 
    if(xmlHttp.status == Ok){ 
     alert('success!'); 
    }else { 
     alert('error'); 
    } 

} 
+0

你不能因为XMLHttpRequest是** **异步 - 我讨厌链接到https://stackoverflow.com/questions/14220321/how-do -i-return-a-asynchronous-call-for-a--call这样的问题,因为这个重复处理jquery,但这个概念是类似的 –

回答

1
<!DOCTYPE html> 
<html> 
<body> 

<h2>Using the XMLHttpRequest object</h2> 

<button type="button" onclick="loadXMLDoc()">Change Content</button> 

<p id="test"></p> 

<script> 


function sendRequest(){ 
    //get refresh access token 
    var accessToken = 'xxx'; 
    //get user_id 
    var userid = document.getElementById('userid').value; 
    //get request_token 
    var requestToken = document.getElementById('requestToken').value; 


    var xmlHttp = new XMLHttpRequest(); 
    var xhttp = new XMLHttpRequest(); 
    xmlHttp.onreadystatechange = function() { 
     if (this.readyState == 4 && this.status == 200) { 
     document.getElementById("test").innerHTML = 
     this.responseText; 
     } 
    }; 
    //insert database 
    var url="database.php"; 
    var parameters = "accessToken=" + accessToken + "&userid=" + userid + "&requestToken=" + requestToken ; 
    xmlHttp.open("POST", url, true); 

    //send request 
    xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
    xmlHttp.setRequestHeader("Content-length", parameters.length); 
    xmlHttp.setRequestHeader("Connection", "close"); 
    xmlHttp.send(parameters); 



} 

</script> 

</body> 
</html> 
1

我认为这是你在找什么

var xhttp = new XMLHttpRequest(); 
    xhttp.onreadystatechange = function() { 
    if (this.readyState == 4 && this.status == 200) { 
     document.getElementById("demo").innerHTML = 
     this.responseText; 
    } 
    }; 
    xhttp.open("GET", "http://your-url.com/your-page.php", true); 
    xhttp.send(); 
+0

谢谢你,但我在哪里把这个相对于我的代码? –

1

onreadystatechange事件被触发每次readyState变化。

在一个服务器请求,readyState的变化从0到4:

0:请求未初始化
1:服务器连接建立 2:请求接收
3:处理请求
4:请求完成并且响应已准备好

因此,在您的代码中,您可以添加侦听器来检查onreadystatechange事件和c赫克在它的地位,就像如下─

function sendRequest(){ 
    //get refresh access token 
    var accessToken = 'xxx'; 
    //get user_id 
    var userid = document.getElementById('userid').value; 
    //get request_token 
    var requestToken = document.getElementById('requestToken').value; 

    //insert database 
    var xmlHttp = new XMLHttpRequest(); 
    var url="database.php"; 
    var parameters = "accessToken=" + accessToken + "&userid=" + userid + "&requestToken=" + requestToken ; 

    //Here is the onreadystatechange event listener. 
    xmlHttp.onreadystatechange = function() { 
     if (this.readyState == 4 && this.status == 200) { 
      alert('success'); 
     } else if(this.readyState == 4 && this.status != 200) { 
      alert('error'); 
     } 
    }; 
    xmlHttp.open("POST", url, true); 

    //send request 
    xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
    xmlHttp.setRequestHeader("Content-length", parameters.length); 
    xmlHttp.setRequestHeader("Connection", "close"); 
    xmlHttp.send(parameters); 

    //check status 
    if(xmlHttp.status == Ok){ 
     alert('success!'); 
    }else { 
     alert('error'); 
    } 

}