Fogeaters, Light The World.

19

2017-Aug

[jQuery] ajax 사용 기초

작성자: title: MoonBlonix IP ADRESS: *.64.228.3 조회 수: 1461

출처:: https://opentutorials.org/course/1375/6851


$.ajax의 문법은 아래와 같다.

1
jQuery.ajax( [settings ] )

setting는 Ajax 통신을 위한 옵션을 담고 있는 객체가 들어간다. 주요한 옵션을 열거해보면 아래와 같다.

  • data
    서버로 데이터를 전송할 때 이 옵션을 사용한다. 
  • dataType
    서버측에서 전송한 데이터를 어떤 형식의 데이터로 해석할 것인가를 지정한다. 값으로 올 수 있는 것은 xml, json, script, html이다. 형식을 지정하지 않으면 jQuery가 알아서 판단한다.
  • success
    성공했을 때 호출할 콜백을 지정한다.
    Function( PlainObject data, String textStatus, jqXHR jqXHR )
  • type
    데이터를 전송하는 방법을 지정한다. get, post를 사용할 수 있다.

위의 내용을 바탕으로 Ajax 통신을 해보자.

time.php

1
2
3
4
5
<?php
$d1 = new DateTime;
$d1->setTimezone(new DateTimezone("asia/seoul"));
echo $d1->format('H:i:s');
?>

demo1.html 

1
2
3
4
5
6
7
8
9
10
11
12
13
<p>time : <span id="time"></span></p>
<input type="button" id="execute" value="execute" />
<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
<script>
$('#execute').click(function(){
$.ajax({
url:'./time.php',
success:function(data){
$('#time').append(data);
}
})
})
</script>

XMLHttpRequest에 비해서 코드가 훨씬 간결해졌다. 

POST 방식

POST 방식으로 통신을 할 때는 아래와 같이 처리한다.

time2.php

1
2
3
4
5
<?php
$d1 = new DateTime;
$d1->setTimezone(new DateTimezone($_POST['timezone']));
echo $d1->format($_POST['format']);
?>

demo2.html

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
<p>time : <span id="time"></span></p>
<form>
<select name="timezone">
<option value="Asia/Seoul">asia/seoul</option>
<option value="America/New_York">America/New_York</option>
</select>
<select name="format">
<option value="Y-m-d H:i:s">Y-m-d H:i:s</option>
<option value="Y-m-d">Y-m-d</option>
</select>
</form>
<input type="button" id="execute" value="execute" />
<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
<script>
$('#execute').click(function(){
$.ajax({
url:'./time2.php',
type:'post',
data:$('form').serialize(),
success:function(data){
$('#time').text(data);
}
})
})
</script>

아래 코드는 form 태그의 정보를 값의이름=값의내용&값 의 형식으로 바꿔준다.

1
data:$('form').serialize(),

JSON 처리

$.ajax를 이용해서 JSON을 처리하는 방법을 알아보자.

time3.php

1
2
3
4
<?php
$timezones = ["Asia/Seoul", "America/New_York"];
echo json_encode($timezones);
?>

demo3.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<p id="timezones"></p>
<input type="button" id="execute" value="execute" />
<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
<script>
$('#execute').click(function(){
$.ajax({
url:'./time3.php',
dataType:'json',
success:function(data){
var str = '';
for(var name in data){
str += '<li>'+data[name]+'</li>';
}
$('#timezones').html('<ul>'+str+'</ul>');
}
})
})
</script>
profile
List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 [Web] 클라우드 IDE + 2 title: MoonBlonix 2017-06-25 15126
112 [jQuery] Ajax 옵션 설명 title: MoonBlonix 2017-09-15 1441
111 [jQuery] 페이지 부분 새로고침 + 1 title: MoonBlonix 2017-09-13 1128
110 정규표현식 분석 + 1 title: MoonBlonix 2017-09-12 1089
109 [php/mysql] 모든 uft-8 한글 인코딩 문제 title: MoonBlonix 2017-09-12 1497
108 [php] AES / mcrypt 양방향 대칭키 암호화/복호화 + 3 title: MoonBlonix 2017-08-28 1239
107 [php/jQuery/Ajax] 파일 업로드 구현 title: MoonBlonix 2017-08-28 1462
» [jQuery] ajax 사용 기초 title: MoonBlonix 2017-08-19 1461
105 [php] 서버 용량 구하기 title: MoonBlonix 2017-08-15 1353
104 [jQuery] 레이어 팝업 title: MoonBlonix 2017-08-15 1490
103 [php/jQuery] 선택된 다수의 체크박스 값 넘기기 / 체크박스 제어 + 2 title: MoonBlonix 2017-08-15 1476
102 [mysql] 저장 프로시저 / 저장 함수 / 트리거 title: MoonBlonix 2017-08-15 1511
101 [mysql] 저장엔진 title: MoonBlonix 2017-08-15 1472
100 [mssql / mysql] sql 트랜잭션(Transaction) + 1 title: MoonBlonix 2017-08-14 1508
99 [mysql] mysqli_fetch_row() mysqli_fetch_assoc() mysqli_fetch_array() 차이 title: MoonBlonix 2017-08-08 1482
98 [javascript/jQuery] Ajax의 흐름과 예제 title: MoonBlonix 2017-08-05 1539
97 [web] html 게시글 에디터 title: MoonBlonix 2017-08-05 1456
96 [mysql] JOIN 쿼리 사용하기 title: MoonBlonix 2017-08-05 1458
95 [mysql] 인덱스 (Index) 사용 방법 및 설명 + 2 title: MoonBlonix 2017-08-05 1716
94 [mysql] TEXT 타입, INT 타입 title: MoonBlonix 2017-08-05 1517
93 [mysql] 성능 향상 전략 + 4 title: MoonBlonix 2017-08-05 1468