[jQuery] Ajax 방법
Ajax를 이용하면 웹 어플리케이션과 비동기적으로 데이터를 주고 받은후 클라이언트에서 해당 데이터에 대한 처리를 할 수 있다. 쉽게 이야기하면 Ajax를 이용할 경우 별도의 웹 페이지를 호출하지 않더라도, 클라이언트 화면을 유지한채 다른 페이지를 호출할 수 있다.
Ajax에 대한 설명은 위키백과를 참고하기 바란다. - http://ko.wikipedia.org/wiki/Ajax
이러한 Ajax를 jQuery를 이용하면 정말 손쉽게 사용할 수 있는데, 기본적인 설정값만 넣어주면 바로 사용이 가능하다.
다음 예제는 웹페이지가 로딩된 후 ajax를 이용하여 ajaxData.jsp를 호출하는 예제이다.
ajaxData.jsp는 텍스트 형식의 값을 리턴하며 리턴된 값을 alert창과 div에 출력한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | <%@ page language= "java" contentType= "text/html; charset=UTF-8" pageEncoding= "UTF-8" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd" > <html> <head> <meta http-equiv= "Content-Type" content= "text/html; charset=UTF-8" > <title>Ajax 간단 테스트</title> <script type= "text/javascript" language= "javascript" > $(document).ready( function (){ $.ajax({ type : "GET" , url : "ajaxData.jsp?type=1" , dataType : "text" , error : function (){ alert( '통신실패!!' ); }, success : function (data){ alert( "통신데이터 값 : " + data) ; $( "#dataArea" ).html(data) ; } }); }); </script> </head> <body> <div id= "dataArea" ></div> </body> </html> |
위의 예제는 ajax 통신을 할때 가장 기본이 되는 항목만 사용하였다. 적어도 위의 설정값 정도는 최소한으로 넣어주는게 좋다.
속성 | 설명 |
type | http 전송 method를 지정한다. GET, POST |
url | 호출 URL. GET 방식일경우 URL 뒤에 파라미터를 붙여서 사용해도 된다. |
dataType | Ajax를 통해 호출한 페이지의 Return 형식이다. 형식에 따라 xml, json, html, text 등을 사용하면 된다. |
error | 에러났을때의 처리 부분이다. |
success | 성공했을때의 처리 부분이다. 보통 해당 부분에서 데이터 핸들링을 하면 된다. |
- 각 Ajax 방식을 호출하는 방법
- $("#btnOK").click(function(){
- var url="test.aspx";
- var params="param1="+param1+"¶m2="+param1;
- $.ajax({
- type:"POST",
- url:url,
- data:params,
- success:function(args){
- $("#result").html(args);
- },
- beforeSend:showRequest,
- error:function(e){
- alert(e.responseText);
- }
- });
- });
1. $.post() 방식
- 서버에 데이터를 HTTP POST 방식으로 전송한 후 서버측 응답 받을 때 사용
[형식]
jQuery.post( url [, data] [, success(data, textStatus, jqXHR)] [, dataType] )
- url : 요청 Url
- data : 요청과 함께 서버에 보내는 string 또는 map
- success(data,textStatus,jqXHR) : 요청이 성공일때 실행되는 callback 함수
- dataType : 서버에서 내려온 data 형식. ( default : xml,json,script,text,html )
[$.ajax 로 표현]
- $.ajax({
- type: 'POST',
- url: url,
- data: data,
- success: success,
- dataType: dataType
- });
[사용예]
- $.post("http://web/test/");
- $.post("http://web/test/", { name: "John", time: "2pm" } );
- $.post("http://web/test/", { 'choices[]': ["Jon", "Susan"] });
- $.post("http://web/test/", $("#testform").serialize());
- $.post("http://web/test/",
- function(data) { alert("Data Loaded: " + data); });
- $.post("http://web/test/", { name: "John", time: "2pm" },
- function(data) { process(data); }, "xml" );
- $.post("http://web/test/", { "func": "getNameAndTime" },
- function(data){
- console.log(data.name);
- console.log(data.time);
- }, "json");
2. $.get() 방식
- 서버에 데이터를 HTTP GET 방식으로 전송한 후 서버측 응답 받을 때 사용
[형식]
jQuery.get( url [, data] [, success(data, textStatus, jqXHR)] [, dataType] )
- url : 요청 Url
- data : 요청과 함께 서버에 보내는 string 또는 map
- success(data,textStatus,jqXHR) : 요청이 성공일때 실행되는 callback 함수
- dataType : 서버에서 내려온 data 형식. ( default : xml,json,script,text,html )
[$.ajax 로 표현]
- $.ajax({
- url: url,
- data: data,
- success: success,
- dataType: dataType
- });
[사용예]
- $.get("http://web/test/");
- $.get("http://web/test/", { name: "John", time: "2pm" } );
- $.get("http://web/test/", { 'choices[]': ["Jon", "Susan"] });
- $.get("http://web/test/", function(data) { alert("Data Loaded: " + data); });
- $.get("http://web/test/", { name: "John", time: "2pm" }, function(data) { process(data); }, "xml" );
- $.get("http://web/test/", { "func": "getNameAndTime" }, function(data){ console.log(data.name); // John console.log(data.time); // 2pm }, "json");
3. $.getJSON() 방식
- 서버에 데이터를 HTTP GET 방식으로 전송한 후 서버측 응답을 JSON 형식으로 받을때 사용
[형식]
jQuery.getJSON( url [, data] [, success(data, textStatus, jqXHR)] )
- url : 요청 Url
- data : 요청과 함께 서버에 보내는 string 또는 map
- success(data,textStatus,jqXHR) : 요청이 성공일때 실행되는 callback 함수
[$.ajax 로 표현]
- $.ajax({
- url: url,
- dataType: 'json',
- data: data,
- success: callback
- });
[사용예]
- <script>
- $.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?",
- {
- tags: "mount rainier",
- tagmode: "any",
- format: "json"
- },
- function(data) {
- $.each(data.items, function(i,item){
- $("<img/>").attr("src", item.media.m).appendTo("#images");
- if ( i == 3 ) return false;
- });
- });
- </script>
4. $.ajax() 방식
- 서버에 데이터를 HTTP POST,GET,JSON 모든 방식 전송 가능한 통합적인 함수
- 다양한 Parameter 존재
[형식]
jQuery.ajax( url [, settings] ) [ 1.5 이상버젼 ] ,jQuery.ajax( settings ) [ 1.0 이상버젼 ]
- url : 요청 Url
- settings : key/value 쌍으로 된 Ajax 요청 Set ( optional )
[사용예]
- $.ajax({
- type: "POST",
- url: "http://web/test/",
- data: { name: "John", location: "Boston" }
- }).done(function( msg ) {
- alert( "Data Saved: " + msg );
- });
- $.ajax({
- url: "http://web/test/",
- cache: false
- }).done(function( html ) {
- $("#results").append(html);
- });
- var menuId = $("ul.nav").first().attr("id");
- var request = $.ajax({
- url: "http://web/test/",
- type: "POST",
- data: {id : menuId},
- dataType: "html"
- });
- request.done(function(msg) {
- $("#log").html( msg );
- });
- request.fail(function(jqXHR, textStatus) {
- alert( "Request failed: " + textStatus );
- });
- $.ajax({
- type: "GET",
- url: "test.js",
- dataType: "script"
- });
4.1 $.ajaxSetup()
- 공통적인 기본 ajax 요청을 미리 설정함
[형식]
jQuery.ajaxSetup( options )
- optional : default Ajax 요청의 설정값 ( key/value )
[사용예]
- $.ajaxSetup({
- url: 'http://web/test/',
- global: false,
- type: "POST"
- });
- $.ajax({
- data: {'name': 'Dan'}
- });
- $.ajax({
- data: {'name': 'John'}
- });
5. $.load() 방식
- 외부 컨텐츠 가져올때 사용
[형식]
.load( url [, data] [, complete(responseText, textStatus, XMLHttpRequest)] )
- url : 요청 Url
- data : 요청과 함께 서버에 보내는 string 또는 map
- complete(responseText, textStatus, XMLHttpRequest) : 요청이 완료될때 실행되는 callback 함수
[사용예]
- $('#result').load('ajax/test.html');
- $('#result').load('ajax/test.html', function() {
- alert('Load was performed.');
- });
- $('#result').load('ajax/test.html #container');
- $("#objectID").load("test.asp", { 'choices[]': ["Jon", "Susan"] } );
'Programming > HTML&CSS&JS' 카테고리의 다른 글
[번역] 자바스크립트 클래스를 정의하는 3가지 방법 (3 ways to define a JavaScript class) (0) | 2016.12.28 |
---|---|
자바스크립트 객체 생성 방법 (0) | 2016.12.28 |
JSON 문법 및 오류사례 (0) | 2016.12.28 |
HTML5를 이용한 프리젠테이션(PPT) 만들기 (1) | 2016.05.11 |
[html] checkbox 무조건 클릭 된 상태로 변경(read only 비슷한 기능) (0) | 2016.02.25 |