브라우저에서 AJAX(XmlHttpRequest) 콜의 타임아웃을 검출하려면 어떻게 해야 합니까?
웹에서 찾고 있는데 문서를 구하기가 어려워요.브라우저의 빌트인을 사용한 기본적인 AJAX 콜은 모두 알고 있습니다.XMLHttpRequest
오브젝트(여기서 최신 브라우저를 참조):
var xmlHttp = new XMLHttpRequest(); // Assumes native object
xmlHttp.open("GET", "http://www.example.com", false);
xmlHttp.send("");
var statusCode = xmlHttp.status;
// Process it, and I'd love to know if the request timed out
그러면 브라우저에서 XMLHttpRequest 개체를 검사하여 AJAX 콜이 타임아웃되었음을 검출할 수 있는 방법이 있습니까?제가 어떻게 하라고 조언받을 수 있을까요?window.setTimeout(function() { xmlHttp.abort() }, 30000);
?
감사합니다!
마이크
최신 브라우저(2012년) 중 일부는 이 기능을 통해setTimeout
: XMLHttpRequest에 포함되어 있습니다.답변 https://stackoverflow.com/a/4958782/698168:
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function () {
if (xhr.readyState == 4) {
alert("ready state = 4");
}
};
xhr.open("POST", "http://www.service.org/myService.svc/Method", true);
xhr.setRequestHeader("Content-type", "application/json; charset=utf-8");
xhr.timeout = 4000;
xhr.ontimeout = function () { alert("Timed out!!!"); }
xhr.send(json);
업데이트: 다음은 타임아웃을 처리하는 방법의 예입니다.
var xmlHttp = new XMLHttpRequest();
xmlHttp.open("GET", "http://www.example.com", true);
xmlHttp.onreadystatechange=function(){
if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
clearTimeout(xmlHttpTimeout);
alert(xmlHttp.responseText);
}
}
// Now that we're ready to handle the response, we can make the request
xmlHttp.send("");
// Timeout to abort in 5 seconds
var xmlHttpTimeout=setTimeout(ajaxTimeout,5000);
function ajaxTimeout(){
xmlHttp.abort();
alert("Request timed out");
}
IE8에서는 타임아웃이벤트 핸들러를XMLHttpRequest
물건.
var xmlHttp = new XMLHttpRequest();
xmlHttp.ontimeout = function(){
alert("request timed out");
}
코드대로 동기 호출을 하지 말 것을 권장합니다.또한 이를 위해 Javascript 프레임워크를 사용할 것을 권장합니다.jQuery가 가장 인기 있습니다.이를 통해 코드를 보다 효율적이고 유지보수가 용이하며 크로스 브라우저 호환성이 향상됩니다.
언급URL : https://stackoverflow.com/questions/1018705/how-to-detect-timeout-on-an-ajax-xmlhttprequest-call-in-the-browser
'programing' 카테고리의 다른 글
SQL Developer에서 저장 프로시저를 실행하시겠습니까? (0) | 2023.03.16 |
---|---|
jQuery를 사용하여 AJAX 응답(json)에서 테이블 행 작성 (0) | 2023.03.11 |
사용자가 페이지를 떠난 후 php 실행이 중지됩니까? (0) | 2023.03.11 |
ES6 맵을 로컬 스토리지(또는 다른 곳)에 보관하려면 어떻게 해야 합니까? (0) | 2023.03.11 |
Wordpress에서 이미지를 비공개로 설정 (0) | 2023.03.11 |