javascrpit 이벤트에서 시작하여 서버에서 어떤 데이터포멧으로 전달하는지만 확인하고 거기에 맞는 함수를 사용하고 ,결과값 도착하면 콜백함수를 호출해서 html로 변환해서 화면으로 출력해준다.
load(url, prameters, callback)
URL과 매개변수로 Ajax요청을 젂송, callback 함수는 요청 완료시 호출, 응답
텍스트는 읷치하는 엘리먼트의 컨텐츠를 대체, HTML결과값읷 경우 사용 용이
$ get(url, prameters, callback)
$post(url, prameters, callback)
URL을 사용하여 서버에 대한 GET/POST 요청을 전송
매개변수는 쿼리 문자열로 전달
GET 은 서버의 데이터를 가져오는(SELECT)데에 적합하고
POST 는 게시판의 글을 등록/수정하는 것과 같은 작업에 적합하다.
$.getJSON(url, prameters, callback)
URL을 사용하여 서버에 대한 GET 요청을 전송
매개변수는 쿼리 문자열로 젂달
응답은 JSON 문자열로 해석되며 결과는 callback함수에 젂달
Ajax(options) : options를 통해 Ajax 요청을 전송
options : 요청에 대한 매개변수를 정의 하는 프로퍼티 객체
이름 타입 설명
이름 | 타입 | 설명 |
---|---|---|
url | String | 요청URL |
type | String | 사용 할 HTTP메서드.(생략시GET) |
data | Object | 요청에 전달될 프로퍼티를 가진 객체 |
dataType | String | 응답의 결과로 반환 되는 데이터의 종류 |
dataType
•xml: 응답 텍스트는 xml로 파싱, XML DOM을 전달
•html: callbak함수로 텍스트 그대로 전송,html코드 평가
•json: JSON문자열로 평가,생성된 객체 전달
•jsonp: json타입과 유사, 원격스크립트 허용
•script:콜백 호출보다 우선하여 스크립트 구문으로 처리
이름 | 타입 | 설명 |
---|---|---|
timeout | Number | Ajax요청의 제한시간, 제한시간초과시 error callback호출 되거나 요청이 취소 |
global | Boolean | True:전역함수활성, false:전역함수비활 contentType String 요청에 지시되는 contentType기본값은“application/x-www-form-urlencoded” |
success | Functio | n 응답이 성공시 호출 되는 함수 |
error | Function | 응답이 에러상태 코드 반한하면 호출 되는 함수 |
complete | Function | 요청이 완료되면 호출되는함수(successorerror이후실행) |
beforeSend | Function | 요청 전송이전 호출함수 |
async | Boolean | true:비동기호출, false:동기호출 |
processData | Boolean | False시 URL인코딩 형태로 처리 되어 전달 되는 데이터를 금지 |
ifModified | Boolean | True시 헤더정보 확인하여 미변경시 요청 성공 |
serialize()
- 확장집합에 있는 전송할 수 있는 상태인 폼 엘리먼트에서 인코딩된 쿼리문자열을 생성.
- 선택되지 않은 체크박스나 라디오 버튺, 선택된 옵션이 없는 드랍다운, 비활성화 된 컨트롤은 변회시 무시.
serializeArray()
- serialize()과 유사하나 확장집합의 폼 엘리먼트의 값을 name, value
로 구성된 배열로 리턴한다.
//step.1 html
$(function(){
$('#letter-a a').click(function(){
$('#dictionary').hide().load('a.html', function(){
$(this).fadeIn();
});
return false;
});
});
//step.2 json
/*$(function(){
$('#letter-b a').click(function(){//팩토리객체가 제이쿼리
$.getJSON('b.json',function(data){//data값은 배열
//제이쿼리함수없이 사용할떄 ($.)전역함수처럼 사용
$('#dictionary').empty();//안에 가진 내용 비워줌.
//결과값:배열[{},{}]=> HTML
$.each(data, function(index, item){//item은 객체
var html = '<div class ="entry">';
html += '<h3 class ="term">'+ item.term +'</h3>'
html += '<div class ="part">'+ item.part +'</div>';
html += '<div class ="definition">'+ item.definition +'</div>';
html += '</div>';
$('#dictionary').append(html);
});
});
return false;
});
});
*/
//Step.2-1 get.json=>ajax변환
$(function(){
$('#letter-b a').click(function(){
$.ajax({
url:'b.json',
type:'get',
dataType:'json',
success:function(data){
$('#dictionary').empty();
data.sort(function(a,b){//내림차순정렬 추가
if(a.term<b.term){
return 1;
}else if(a.term,b.term){
return -1;
}else{
return 0;
}
});
$.each(data, function(index, item){
var html = '<div class ="entry">';
html += '<h3 class ="term">'+ item.term +'</h3>'
html += '<div class ="part">'+ item.part +'</div>';
html += '<div class ="definition">'+ item.definition +'</div>';
html += '</div>';
$('#dictionary').append(html);
});
},
});
return false;
});
});
//step.3 java script
$(function(){
$('#letter-c a').click(function(){
$.getScript('c.js');//자바스크립트가 실행되고 있는데
//c 눌럿을때 호출되면 좋겟다.
return false;
});
});
//step.4 xml
/*$(function(){
$('#letter-d a').click(function(){
//xml => html변환 => 화면출력 .파라미터값 없음 get으로
$.get('d.xml',function(data){//콜백함수.
//data(자바스크립트객체임):entries전체=>entry들을 가져와야함.
$('#dictionary').empty();
$(data).find('entry').each(function(index){
//find,each 사용할려면 제이쿼리함수(팩토리화)해주어야 함.
$entry =$(this);
var html = '<div class ="entry">';
html += '<h3 class ="term">'+ $entry.attr('term') +'</h3>'
html += '<div class ="part">'+ $entry.attr('part') +'</div>';
html += '<div class ="definition">'+ $entry.find('definition').text() +'</div>';
html += '</div>';
$('#dictionary').append(html);
});
});
return false;
});
});*/
//step.4-1get() =>ajax()변환
$(function(){
$('#letter-d a').click(function(){
$.ajax({
url:'d.xml',
type:'get',
dataType:'xml',
success:function(data){
$('#dictionary').empty();
$(data).find('entry').each(function(index){
//find,each 사용할려면 제이쿼리함수(팩토리화)해주어야 함.
$entry =$(this);
var html = '<div class ="entry">';
html += '<h3 class ="term">'+ $entry.attr('term') +'</h3>'
html += '<div class ="part">'+ $entry.attr('part') +'</div>';
html += '<div class ="definition">'+ $entry.find('definition').text() +'</div>';
html += '</div>';
$('#dictionary').append(html);
});
} ,
});
return false;
});
});
//step.5
$(function(){
$('#letter-e a').click(function(){
$.get('server3.jsp',{'term':$(this).text(),/*'a':b 이렇게 두개도 가능*/}
,function(data){//파라미터값을 key:value 방식으로 전달.
$('#dictionary').text(data);
});
return false;
});
});
//step.6 form형식 ajax
$(function(){
$('#letter-f form').submit(function(){
$.ajax({
url:'server3.jsp',
type:'post',
data:$(this).serialize(),
//this는 form이고 serialize()는form-submit일때만 사용됨.
dataType:'text',
success:function(data){
$('#dictionary').text(data);
}
});
return false;
});
});
$.getJSON('ajax01.jsp',function(data){
$('#treeData').append('<tr><th>이름</th><th>주소</th></tr>');
$.each(data, function(index,m){
$('#treeData').append('<tr><td>'+m.name+'</td><td>'+m.address+'</td></tr>');
});
});
$(function(){
$.ajax({
url:'ajax01.jsp',
type:'get',
dataType:'json',
success:function(data){
var html = '<tr><th>'+'이름'+'</th><th>'+'주소'+'</th></tr>';
$.each(data, function(index){
html += '<tr>';
html += '<td>'+ this.name + '</td>';
html += '<td>'+ this.address+'</td>';
html += '</tr>';
});
$('#treeData').append(html);
}
});
});
/*
success: successHandler로 호출해서 할 경우.
function successHandler (data){
$('#list'.empty());
$each(data,function(index,blog){
var html ='<div>';
html += '<h3>'+ blog.title+'</h3>';
html += '<div>'+blog.write+'</div>';
html += '<div>'+blog.contents+'</div>';
html += '</div>';
$('#list').append(html);
});
}
});
*/
$(function() {// json 값 받아오는거 html로 출력하는것
$(window).on('load', function() {
$.ajax({
url : 'server.jsp',
type : 'get',
dataType : 'json',
success : function(data) {
$.each(data, function(index) {
var html = '<div class = "test">';
html += '<p>tilte : ' + this.title +', write : '+ this.writer+ ', contents : '+this.contents+'</p>';
html += '</div>';
$('#list').append(html);
});
}
});
});
});
$(function() { // 댓글을 쓰면 ajax를 통해서 가져가야함. serialize() 보내고 다시 가져오는것.
$('form').submit(function(e) {
e.preventDefault();
$('#list').empty();
$.ajax({
url : 'server.jsp',
type : 'post',
data : $(this).serialize(),//데이타를 다 만들어준다.
dataType : 'json',
success : function(data) {
$.each(data, function(index) {
var html = '<div class = "test">';
html += '<p>tilte : ' + this.title +', write : '+ this.writer+ ', contents : '+this.contents+'</p>';
html += '</div>';
$('#list').append(html);
});
}
});
$('form input').not('form input:last').val('');
});
});