programing

XMLHttpRequest.send에 늘을 전달하는 이유는 무엇입니까?

javamemo 2023. 3. 21. 21:25
반응형

XMLHttpRequest.send에 늘을 전달하는 이유는 무엇입니까?

왜?send흔히 말하는

xhr.send(null)

대신

xhr.send()

?

W3, MDNMSDN은 모두 옵션임을 나타냅니다.또한 ActiveX 컨트롤에는 다음과 같은 인수가 필요하지 않은 것 같습니다.

hr=pIXMLHTTPRequest.CreateInstance("Msxml2.XMLHTTP.6.0");
SUCCEEDED(hr) ? 0 : throw hr;

hr=pIXMLHTTPRequest->open("GET", "http://localhost/books.xml ", false);
SUCCEEDED(hr) ? 0 : throw hr;

hr=pIXMLHTTPRequest->send(); // <-- this line
SUCCEEDED(hr) ? 0 : throw hr;

의 관행send(null)구글 지도에서는 적어도 2005년까지 거슬러 올라가지만, 더 자세히 설명하면 다음과 같은 설명이 없습니다.

Y.asynchronousTransform = function (qc, vb, kc, Nc, Ba) {
    if (m.type == 3) return;
    var cc = Y.getCached(kc);
    if (cc) {
        cc.transformToHTML(qc, vb);
        if (Nc) Nc();
        return
    }
    var yc = qa.create(Ba);
    var sa = Xd.create();
    nd('<a href="' + kc.xmlEscape() + '">' + kc.xmlEscape() + "</a>", 0);
    sa.open("GET", kc, true);
    sa.onreadystatechange = function () {
        if (sa.readyState == 4) {
            if (yc.isValid()) {
                try {
                    var Db = sa.responseXML;
                    var cc = Y.create(Db);
                    Y.cache(kc, cc);
                    cc.transformToHTML(qc, vb);
                    if (Nc) Nc()
                } catch (b) {}
            }
        }
    };
    sa.send(null)
}

XMLHttpRequest의 오래된 사양을 살펴보면 W3C에서는 파라미터가 옵션일 필요가 없었던 것 같습니다.그 때문에, 「만일의 경우」라고 하는 명시적인 늘치를 제공할 가능성이 있습니다.

('SHOUT support the send' 검색) http://web.archive.org/web/20060409155734/http : //www.w3.org/TR/XMLHttpRequest/

또 다른 그럴듯한 이유는 러시아어 페이지 번역입니다.여기서 볼 수 있습니다.긴 Google 번역 링크('GET-Request for Version without ActiveX' 검색)

ActiveX 를 사용하지 않고 버전의 GET-Request 를 송신하는 경우는, null 을 지정할 필요가 있습니다.그렇지 않으면 파라미터를 지정할 수 없습니다.GET이 항상 null로 지정되어 있는 경우 실패하지 않습니다.

이것이 사실인지 아닌지 알 수 없지만 GET 매개 변수가 본문에 포함되어 있다면 데이터 값이 '정의되지 않은' 경우 본문이 생성되지 않았을 수 있습니다.

불행히도, 나는 내 검색에서 더 결정적인 것을 찾을 수 없었다.

추가하지 않음null이전 버전의 Firefox에서는 예외가 발생합니다.

이 동작은 2002년부터 존재했으며 Firefox 3(2008)을 통해 존재했습니다.

따라서 HTTP 요청 방식이 GET인 경우 HTTP 클라이언트는 데이터를 요청 URL(이른바 쿼리 문자열)에 추가하는 것만으로 서버에 데이터를 전송합니다.이는 요청 본문이 비어있음을 의미하므로 이 인수 값을 다음과 같이 설정해야 합니다.null.

단, HTTP 요청 방식이 POST인 경우 요청 데이터는 요청 본문에 배치되며, 요청 본문은 최종적으로 를 통해 서버로 전송됩니다.send기능.

건배!

XMLHttpRequest.send() 메서드가 요청을 전송합니다.요구가 비동기일 경우(기본값), 이 메서드는 요청이 전송되는 즉시 반환됩니다.요청이 동기화된 경우 이 메서드는 응답이 도착할 때까지 반환되지 않습니다.send()는 요청 본문에 대한 선택적 인수를 받아들입니다.요청 방식이 GET 또는 HEAD일 경우 인수는 무시되고 요청 본문은 null로 설정됩니다.

언급URL : https://stackoverflow.com/questions/15123839/why-do-we-pass-null-to-xmlhttprequest-send

반응형