簡體   English   中英

使用 Javascript 請求 HTTP(S) 並接收 JSON 數據

[英]HTTP(S) Request With Javascript and receive JSON data

因為我是 http(s) 請求案例的新手,我這里有一個案例必須用 Javascript 編寫,希望有人能幫助我,因為我到處搜索但找不到答案。 這是這種情況:

但是,當連接速率上升到5時,我將不得不等待其中一個完成相應的再發送請求,這樣其中的2個或更多不會超過5。另外,當響應碼不是200時,我會重試3次。 如果重試 3 次后響應碼仍然不是 200,則錯誤函數將繼續執行。 我還必須接收響應主體的 Json 數據作為參數函數。

<!DOCTYPE html>
<html>
<head>
<script>
function loadXMLDoc()
{
var xmlhttp;
if (window.XMLHttpRequest)
  {
  xmlhttp=new XMLHttpRequest();
  }
else
  {
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    }
  else if (xmlhttp.readyState==4 && xmlhttp.status!=200){
    document.write("Error");
  }
}
xmlhttp.open("GET","demo_get.asp",true);
xmlhttp.send();
}
</script>
</head>
<body>

<h2>AJAX</h2>
<button type="button" onclick="loadXMLDoc()">Request data</button>
<div id="myDiv"></div>

</body>
</html>

請在下面的評論中提供幫助,或者您可以向我推薦可以幫助我解決此案例的鏈接。 謝謝。

像這樣的東西?

關於連接率,您可以使用此方法進行多個方向,因為它不是 100% 清楚您想要什么。 最簡單的解決方案是讓您的 asp 頁面將“假錯誤”作為 json 對象返回,並讓success函數檢查響應是否包含此“假錯誤”。 如果是,則將請求重新發送到服務器。 或者,如果連接速率 ​​< 5,您可以讓 asp 頁面僅發送響應,但這可能意味着您的用戶最終等待的時間比預期的要長。

var getJSON = function getJSON( resource, success, failure ) {
        var xmlhttp = (window.XMLHttpRequest) ? xmlhttp=new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
        xmlhttp.onreadystatechange = function() {
            if (xmlhttp.readyState === 4 && xmlhttp.status === 200) {
                retry = 0;
                success(xmlhttp.responseText, 200);
            }
            else failure(xmlhttp.status);
        }
        xmlhttp.open("GET", resource, true);
        xmlhttp.send();
    },
    retry = 0,
    success = function success( response, status ) {
        document.querySelector("#myDiv").textContent = response;    
    },
    failure = function failure( status ) {
        if (retry < 3) {
            retry += 1;
            getJSON("demo_get.asp", success, failure);
        }
        else console.log('ERROR');      
    };
document.querySelector('button').addEventListener('click', function( event ) {
    getJSON("demo_get.asp", success, failure);
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM