jQuery에서 Ajax 처리하기
jQuery는 서버로부터의 Ajax 데이터를 처리하기 위해 jqXHR 이라는 객체를 제공합니다.
/* jqXHR */
responseText // 서버로부터 리턴된 텍스트 데이터
responseXML // 서버로부터 리턴된 XML 데이터
status // 상태코드
statusText // 상태 설명 문자열 (오류의 상세한 내용)
.done() // 요청이 성공했을 때 실행될 코드를 지정
.fail() // 요청이 실패했을 때 실행될 코드를 지정
.always() // 요청의 성공/실패 여부에 관계없이 항상 실행될 코드를 지정
.abort() // 서버와의 커뮤니케이션을 취소
jQuery로 데이터 로드하기
.load()
메서드를 사용해 요소에 HTML 코드를 로드합니다.
$("#content").load("data.json");
Ajax 요청 상세 제어하기
$.ajax()
메서드를 사용하면 모든 Ajax 요청을 제어할 수 있습니다.
- type - 요청을 보낼 방식. GET 또는 POST
- url - 요청을 보낼 페이지의 경로
- data - 요청과 함께 서버로 전달될 데이터
- timeout - 실패한 것으로 처리하기까지 기다릴 시간 설정
- beforeSend - 요청을 전달하기 전 호출될 함수 (로딩 중 아이콘 표시 등)
- done - 성공했을 때 호출될 함수
- fail - 실패했을 때 호출될 함수
- always - 성공/실패 이벤트 처리한 다음에 실행될 함수 (로딩 중 아이콘 제거 등)
var request = $.ajax({
type: "POST",
url: url,
data: { id : id },
timeout: 2000,
beforeSend: function() {
$content.append("<div id='loading'>로딩...</div>");
},
});
request.done(function( msg ) {
$content.html($(data).find("#container")).hide().fadeIn(400);
});
request.fail(function( jqXHR, textStatus ) {
$("#panel").html("<div class='fail'>로딩 실패</div>");
});
request.always(function() {
// code...
});
jQuery Ajax 약식 메서드들
아래의 약식 메서드는 모두 내부적으로 $.ajax() 메서드를 사용합니다.
/* get - HTTP GET 리퀘스트를 사용해서 서버로부터 데이터를 로드 */
$.get(url [, data][, success][, type])
// url : 데이터를 가져올 경로
// data : 서버로 전송될 추가 정보
// callback(success) : 데이터를 받았을 때 호출될 콜백함수를 지정
// type : 원하는 응답 형식을 지정
// 리턴 : jqXHR
$.get("votes.php", queryString, function(data) {
$("#selector").html(data);
});
/* post - HTTP POST를 이용해서 서버의 데이터를 수정. 주로 폼 데이터를 서버로 전송하는 용도 */
$.post(url [, data][, callback][, type])
// url : 데이터를 처리할 서버상의 파일 경로
// data : 전송할 폼 데이터
/* serialize - 폼 데이터의 정보를 선택하여 처리 */
.serialize()
/* getJSON - GET 요청을 이용해서 JSON 데이터를 로드 */
$.getJSON(url [, data][, callback])
/* getScript - GET 요청을 이용해서 스크립트를 로드 (JSONP) */
$.getScript(url [, callback])