본문 바로가기
IT/자바스크립트

[jQuery] load() 메소드 인자

by 불멸남생 2023. 10. 16.

load() 메서드는  세 가지 인자를 가질 수 있습니다.

 

.load( url [, data ] [, complete ] )    반환값: jQuery

 

- url : 데이터를 받을 URL을 나타내는 문자열입니다.

- data : 선택적인 인자로 URL로 요청을 보낼 때 같이 보낼 데이터로 자바스크립트 객체 또는 문자열입니다.

- complete : 요청이 완료되면 호출될 콜백함수입니다.Function( String responseText, String textStatus, jqXHR jqXHR )

 

성공적인 응답이 감지되었을 경우("textStatus" 가 "success" 또는 "notmodified" 일 때). load() 메서드는 반환된 데이터를 매치된 요소의 HTML 콘텐츠로 설정합니다. 만약 셀렉터에 의해 매칭된 요소가 없다면 (이 경우, 만약 문서가  id="result" 인 요소를 포함하고 있지 않다면 ) Ajax 요청은 보내어지지 않습니다.

 

 

콜백 함수(Callback Function)

 

만약 "complete" 콜백이 제공되어 진다면, 그것은 후처리와 HTML 삽입이 수행된 다음에 실행됩니다. jQuery 선택자로 여러 개의 요소가 선택되었다면 콜백은 jQuery 컬렉션 내의 각 요소에 대해 한 번씩 실행되어집니다. 그리고, this는 각 DOM 요소가 차례로 설정됩니다.

 

$("#result").load("data.html", funcion() {

    alert("Load was performed.");

});

 

위의 두 예제에서 만약 현재 문서가 id="result" 인 요소를 포함하고 있지 않다면, .load() 메서드는 실행되지 않습니다.

 

 

HTTP 요청 메서드(Request Method)

 

두 번째 인자인 data가 주어지면 POST 메서드로 보내어지고, 그 외의 경우에는 GET 방식으로 보내어집니다.

 

 

받은 페이지의 일부만 사용하기

 

.load() 메서드는 원격에서 받은 문서에서 삽입될 부분을 지정할 수 있습니다. 이것은 url 파라미터에 대한 특수한 구문을 사용하여 처리합니다. 하나 이상의 공백이 문자열에 포함되어 있으면 첫 번째 공백 다음의 문자열 부분은 로드할 내용을 결정하는 jQuery 셀렉터로 간주됩니다.

 

위의 예제를 수정하여 가져온 문서의 일부만 사용하도록 할 수 있습니다.

 

$("#result").load("data.html #container");

 

이 메서드가 실행될 때 그것은 data.html의 내용을 가져옵니다. 그러나 jQuery는 반환된 문서를 파싱하여 container라는 ID를 가진 요소를 찾습니다. 이 요소와 요소에 포함된 내용이 result라는 ID를 가진 요소에 삽입됩니다. 그리고 나머지 반환된 내용은 버려집니다.

 

jQuery는 브라우저의 .innerHTML 프로퍼티를 사용하여 가져온 문서를 파싱하고 현재 문서에 삽입합니다. 이 작업을 하는 동안 브라우저는 종종 문서에는 <html>, <title> 또는 <head> 와 같은 요소들을 걸러냅니다. 그 결과로 .load() 메서드에 의해 가져온 요소들은 문서가 직접 브라우저로 가져온 문서와 정확히 같지 않을 수 있습니다.

 

 

스크립트 실행

 

셀렉터를 나타내는 접미사가 없는 URL을 사용하여 .load()를 호출할 때 받은 컨텐츠는 스크립트가 제거되기에 앞서 .html() 메소드로 보내어집니다. 이것은 스크립트가 버려지기전에 스크립트 블록을 실행합니다. 만약 .load()가 셀렉터 표현을 포함하는 URL로 호출되었다면 스크립트는 DOM이 업데이트되기 전에 제거되고 실행되지 않습니다.

반응형