xmlHttpRequest.open() 메서드의 매개 변수 "true"
제가 MDN에서 읽은 자료에 의하면,
TRUE인 경우(기본값), 서버의 응답이 아직 도착하지 않은 동안 JavaScript 함수의 실행이 계속됩니다.
AJAX에 있는 A입니다.
나는 AJAX를 사용해 왔지만 그것을 읽었을 때 약간 혼란스러웠습니다.제가 AJAX 개념을 잘 이해하지 못하는 것이 문제라고 생각합니다.물론 AJAX가 페이지를 새로 고치지 않는다는 것은 서버에 대한 연결과 응답이 백그라운드에서 완전히 수행된다는 것을 의미합니다.
하지만 그 참조에 따르면 제가 상상할 수 있는 것은 만약 제 자바스크립트에 이런 코드가 있다면:
//true, therefore process the function while server retrieves url
var xmlResponse;
var url = "http://example.com/file.xml";
xml_req.open("GET", url, true);
xml_req.onreadystatechange = function() {
if(xml_req.readyState == 4 && xml_req.status == 200) {
if(xml_req.responseText != null)
xmlResponse = xml_req.responseXML; //server response may not yet arrive
else {
alert("failed");
return false;
}
};
xml_req.send(null);
서버가 여전히 데이터를 검색하고 있다는 의미에서 xmlResponse가 정의되지 않을 수도 있다는 것을 의미하지 않습니까?누가 AJAX 기술에서 실행의 흐름이 실제로 무엇인지 설명할 수 있습니까?잘 부탁드립니다.
여기에 좀 더 자세한 기사를 썼지만, 이것이 기본적인 생각입니다.
true로 설정하면 비동기 요청을 하는 것입니다.즉, HTTP 요청이 완료될 때까지 코드가 일시 중지되지 않습니다.동기식 호출은 브라우저를 잠가 다른 작업이 실행되지 않도록 합니다.그것은 문제를 일으킬 수 있기 때문에 사람들은 비동기식을 선호합니다.
XHR 객체는 그것이 무엇을 하고 있는지 우리에게 업데이트합니다.준비 상태 변경 이벤트에 대한 업데이트를 제공합니다.상태를 추적할 수 있도록 기능을 등록합니다.준비 상태 변경은 4번 호출됩니다.각각의 상태가 서로 다릅니다.
0 = uninitialized
1 = loading
2 = loaded
3 = interactive
4 = complete
준비 상태가 4일 때 데이터를 사용할 수 있습니다.
이제 당신이 게시한 코드에서 완료 상태를 확인하고 있으며 상태가 200 [ok]인지 확인합니다.
if(xml_req.readyState == 4 && xml_req.status == 200){
xmlResponse 값은 반환되기 전에 코드의 다른 위치에서 사용하려고 하면 정의되지 않습니다.예문
ml_req.send(null);
alert(xmlResponse );
XMLHttpRequest 기사의 첫 번째 기사 중 하나가 당신에게 좋은 읽을거리가 될 것입니다.xmlhttpreq에 대한 Apple 문서
이해해야 할 중요한 것은 당신의onreadystatechange
핸들러가 즉시 실행되지 않습니다.그리고 그것은 한 번 이상 실행됩니다.조각을 개별 기능으로 분할하면 개념화하는 것이 더 쉬울 수 있습니다.
function makeRequest(url)
{
var xhr = new XMLHttpRequest();
xhr.open("GET", url, true);
xhr.onreadystatechange = receiveResponse;
xhr.send();
}
function receiveResponse(e)
{
if (this.readyState == 4)
{
// xhr.readyState == 4, so we've received the complete server response
if (this.status == 200)
{
// xhr.status == 200, so the response is good
var response = this.responseXML;
...
}
}
}
첫째번.makeRequest
호출된 다음 종료합니다.그럼, 서버로부터 뭔가 연락이 오는 즉시,receiveResponse
이 호출됩니다.매번 응답이 완전히 수신되었는지 확인한 후에야 응답을 계속 처리합니다.
언급URL : https://stackoverflow.com/questions/6461958/parameter-true-in-xmlhttprequest-open-method
'programing' 카테고리의 다른 글
깃 후크를 제거하는 방법 (0) | 2023.08.09 |
---|---|
phpmyadmin 선택한 데이터를 SQL에서 Excel로 내보냅니다. (0) | 2023.08.09 |
룸 지속성 lib의 기본 키를 자동 증분으로 만드는 방법 (0) | 2023.08.04 |
CIDR 서브넷에 IP 주소가 포함되어 있는지 확인합니다. (0) | 2023.08.04 |
APK 파일에서 AndroidManifest.xml을 보는 방법은 무엇입니까? (0) | 2023.08.04 |