2017-10-11 105 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'); 
    } 

}