HTTP(S)请求使用Javascript并接收JSON数据

时间:2015-09-21 13:18:18

标签: javascript json xmlhttprequest httprequest

因为我是关于http(s)请求案例的新内容,我在这里有一个案例必须写在Javascript上,希望有人可以帮助我,因为我已经到处搜索,无法找到答案。情况就是这样:

但是,当连接速率达到5时,我必须等到其中一个完成对应才能发送请求,这样它们中的两个或更多不会超过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>

请在下面提供评论帮助,或者您可以建议我可以帮助我解决此案例的链接。谢谢。

1 个答案:

答案 0 :(得分:1)

这样的东西?

关于连接速率,您可以使用此方法进行多个方向,因为它不是100%清楚您想要的。最简单的解决方案是让你的asp页面返回一个'假错误'作为json对象,并让success函数检查响应是否包含这个'假错误'。如果是,请将请求重新发送到服务器。或者你可以让asp页面只发送一个响应,如果连接率&lt; 5,但这可能意味着您的用户最终等待的时间更长。

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);
});