ajax는 현재 페이지를 유지하면서 ajax콜을 통해 데이터를 받아올 수 있는 기술이다.
현재 페이지를 유지하고 데이터를 가지고 오는 ajax
- ajax는 기본적으로 jQuery 에 소속되어 있기 때문에 jQuery를 추가해야한다.
- jQuery에 내장되어 있는
$.ajax()
로 동작한다.
기본 ajax
$(document).ready(function () {
$('button#testBtn1').on('click', function () {
// property를 설정한다.
$.ajax({
url : "test.jsp",
type : "get",
data : {t1 : "Hello", t2 : "World"},
success : function (data) {
alert(data);
},
error : function (data) {
alert(data);
}
});
})
});
url
: 경로type
: 전송방식data
: 데이터success
: 성공했을때 콜백error
: 에러일때 콜백
ajax 사용하기
-
xml파일을 읽어 form에 출력
-
json파일을 읽어 form에 출력
-
DB에서 읽어 들어 form에 출력
- 아이디 입력할때 사용자의 아이디가 있는지 없는지 체크할 대
외부 json 파일에서 데이터 로드
- json으로 만들어진 파일을 읽고 성공하면 데이터를 출력한다.
$(function () {
$('button#testBtn').on('click', function () {
$.ajax({
type: 'post',
url: 'data.json',
datatype: 'json',
success: function(data){
alert('data load ' + data);
for(var i=0; i<data.length; i++){
console.log(data[i].version + ":" + data[i].codename);
}
},
error: function (error) {
alert('data error');
}
});
})
})
- 성공하면 반복문을 통해 콘솔에 결과를 출력한다.
$(function () {
$('button#testBtn').on('click', function () {
$.ajax({
type: 'post',
url: 'data.json',
datatype: 'json',
success: function(data){
alert('data load ' + data);
$.each(data, function (i, item) {
$('p#demo').append(item.version + " : " + item.codename + '<br>');
})
},
error: function (error) {
alert('data error');
}
});
})
})
- 반복문 외에 jQuery에서 제공하는
$.each()
함수를 통해 결과를 출력할 수 있다.
외부 web에서 파일 로드
- json을 리턴하는 웹에 ajax를 통해 결과를 로드할 수 있다.
$(function() {
$('button#testBtn').on('click', function () {
$.ajax({
type: 'post',
url: 'https://iwb.jp/s/js/data.jsonp',
dataType: 'jsonp',
jsonpCallback: 'android',
success: function(data) {
$.each(data, function (i, item) {
$('p#demo').append(item.version + ' : '+ item.codename+'<br>');
})
}
});
})
})
xml 에서 데이터 로드
- json뿐만 아니라 xml에서도 데이터를 읽어올 수 있다.
<?xml version="1.0" encoding="UTF-8"?>
<website>
<news>
<target>daum</target>
<link>http://daum.com</link>
<name>다음 사이트</name>
</news>
<news>
<target>google</target>
<link>http://google.com</link>
<name>구글 검색</name>
</news>
</website>
var _xml;
var _arrTarget = [];
var _arrLink = [];
var _arrDesc = [];
$(function () {
$('#testBtn').on('click', function () {
$.ajax({
url: 'data.xml',
dataType: 'xml',
type: 'post',
success: function (data) {
_xml = $(data).find("website"); // root를 찾아준다.
var len = _xml.find("news").length;
for(var i=0; i<len; i++){
_arrTarget[i] = _xml.find('news').eq(i).find('target').text();
_arrLink[i] = _xml.find('news').eq(i).find('link').text();
_arrDesc[i] = _xml.find('news').eq(i).find('name').text();
$('body').append(_arrTarget[i]);
$('body').append(_arrLink[i]);
$('body').append(_arrDesc[i]);
$('body').append("<br>");
}
},
error: function (xhr) {
}
})
})
})
- xml파일을 읽어서 로드한다.
- 각 태그의 이름을 알고있으면 더 쉽게 접근할 수 있다.
- 태그별 데이터를 배열에 저장한다.
입력한 값 ajax로 전송하기
- ajax는 데이터를 전송하는 것도 가능하다.
$(function () {
$('#button').on('click', function () {
$.ajax({
type : 'get',
url : 'check.jsp',
data : {
number : $('#number').val(),
id : $('#id').val(),
comment : $('#comment').val()
},
success : function (data) {
$('div#ajaxReturn').html(data);
},
error : function (xhr) {
}
})
})
})
check.jsp
에 ajax 콜을 하면check.jsp
의 페이지의 정보를 읽어온다.- 리턴값이 json이 아니면 html코드 전체를 가져온다.
number
,id
,comment
를 변수로 사용할 수 있다.
Comments