programing

xmlHttpRequest.open() 메서드의 매개 변수 "true"

linuxpc 2023. 8. 9. 20:32
반응형

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

반응형