因为我是关于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>
请在下面提供评论帮助,或者您可以建议我可以帮助我解决此案例的链接。谢谢。
答案 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);
});