2015-09-21 1 views
-1

, так как я новичок в случае запроса http (s), у меня есть один случай здесь, который должен быть написан на Javascript, надеюсь, что кто-то может мне помочь, потому что я искал всюду и не смог найти ответа. В этом случае:HTTP (S) Запрос с Javascript и получать данные JSON

Однако, когда скорость соединения достигает 5, мне придется подождать, пока одна из них не будет закончена, перед отправкой запроса, так что 2 или более из них не превысят 5. Кроме того, когда код ответа не 200, я повторю попытку 3 раза. Если код ответа по-прежнему не 200 после повторной попытки 3 раза, функция ошибки будет продолжена. Я также должен получить данные 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

Почему вы не включили коды в свой вопрос, что вы пробовали до сих пор ?? –

+0

извините за это, я вставил свой код выше, вот что я пробовал до сих пор, я застрял на этом – aryswisnu

ответ

1

Что-то вроде этого?

Что касается скорости соединения, вы можете пойти с этим несколькими направлениями, так как это не на 100% ясное, что вы хотите. Самым простым решением было бы, чтобы ваша страница asp вернула «фальшивую ошибку» как объект json и проверила функцию success, если ответ содержит эту «ложную ошибку». Если это так, отправьте запрос на сервер. Или вы могли бы получить страницу asp только для отправки ответа, если скорость соединения < 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); 
}); 
+0

спасибо за предложение, что это очень полезно, кстати, кстати, не могли бы вы дать мне примерную страницу для ответа вроде того, что вы объясните? – aryswisnu

+0

Поскольку вы ожидаете ответа JSON, а не html-страницы, просто верните структуру данных JSON. Я не знаком с asp, поэтому не могу помочь вам с сервером увы. – Shilly

+0

no no, asp - это просто мое предположение, если бы вы могли помочь мне с JSON-примером, это было бы здорово – aryswisnu

Смежные вопросы