์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
Tags
- ์ฐ์ฐ์
- ์ค๋ฒ๋ก๋ฉ
- ๋ ผ๋ฆฌ ์ฐ์ฐ์
- join
- ์๋ณ์
- ์ธํ ๋ฆฌ์ ์ด Web ์ ํ๋ฆฌ์ผ์ด์
- ์๋ฐ์์ ์
- ๋ฐ๋ณต๋ฌธ
- SpringSecurity ๋ก๊ทธ์์
- StringBuffer
- ์์ฝ์ด
- ์ค๋ฒ๋ผ์ด๋ฉ
- ๊ฐ์ฒด
- spring ๊ฒ์ํ ์ญ์
- @PreAuthorize("isAuthenticated()")
- ์ดํด๋ฆฝ์ค ์ค์น
- ๋ฐฐ์ด
- SpringSecurity ๋ก๊ทธ์ธ
- ์ฐ์ ์ฐ์ฐ์
- ์น์ ํ SQL
- SQL ํ๋
- ๋น๊ต ์ฐ์ฐ์
- java
- ๊ฐ์ฒด์งํฅ
- ํจ์
- SQL
- ์์
- SQLํ๋
- ์น์ ํ SQL ํ๋
- ์คํ๋ง์ํ๋ฆฌํฐ ๋ก๊ทธ์์
Archives
- Today
- Total
gi_dor
04. Ajax ๋ณธ๋ฌธ
๐ธ Ajax
- ์๋ฐ์คํฌ๋ฆฝํธ์ XML ์ ์ฌ์ฉํด์ ์๋ฒ์์ ๋น๋๊ธฐ ๋ฐ์ดํฐ ํต์
- ๋น๋๊ธฐ ํต์ ?
โถ ์น ํ์ด์ง ์์ ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋ ํ์ด์ง๋ฅผ ์๋ก๊ณ ์นจ ํ์ง ์๊ณ ๋ฐ์ดํฐ๋ฅผ ๊ตํ ํ๋ ๋ฐฉ์
๋ณดํต ์ผ๋ฐ์ ์ธ ๋๊ธฐ์ ํต์ ์ ์์ฒญ์ ๋ณด๋ด๋ฉด ์๋ฒ์์ ์๋ต์ด ์ฌ ๋๊น์ง ๊ธฐ๋ค๋ ค์ผ ํ๋ค
๊ทธ๋์์๋ ํ๋ฉด์ด ๋ฉ์ถ๊ณ ๋ค๋ฅธ ์์ ์ด ์ํ ๋ถ๊ฐ๋ฅํ๋ค
๋น๋๊ธฐ์ ํต์ ์ ์ฌ์ฉํ๋ฉด ์์ฒญ์ ๋ณด๋ธ ํ์๋ ํ๋ฉด์ด ๋ฉ์ถ์ง ์๊ณ ๊ณ์ํด์ ๋ค๋ฅธ ์์ ์ ์ํํ ์ ์๋ค
- ๋น๋๊ธฐ ํต์ ?
- XMLHttpRequest ๊ฐ์ฒด๋ฅผ ํ์ฉํด์ ์๋ฒ์ ๋ฐ์ดํฐ ํต์ ์ ํ๋ค
- ์๋ฐ ์คํฌ๋ฆฝํธ๋ก ์๋ฒ์ ๋ฐ์ดํฐ ํต์ ์ด ๊ฐ๋ฅํด์ก๋ค
- ํ์ด์ง์ ๋ฆฌ๋ก๋ฉ์์ด ํ๋ฉด์ ์ผ๋ถ๋ถ ๊ฐฑ์ ํ๋๊ฒ ๊ฐ๋ฅํด์ง
์ฌ์ฉ ํ๋ ์ด์
- ํ์ด์ง ์ผ๋ถ๋ง ๊ฐฑ์ : ์ ์ฒด ํ์ด์ง ์๋ก๊ณ ์นจ ํ์ง ์๊ณ ์๋ฒ์ ํต์ ํด ํ์ํ ๋ฐ์ดํฐ๋ง ๊ฐ์ ธ์ฌ์ ์๋ค , ์ผ๋ถ๋ถ๋ง ์ ๋ฐ์ด๋ ํ ์ ์๋ค
- ๋น ๋ฅธ ์๋ต์๊ฐ : ์ฌ์ฉ์์ ํ์ด์ง๋ ์ผ์์ ์ผ๋ก ๋ฉ์ถ์ง ์๊ณ ๋ค๋ฅธ ์์ ์ ์ํํ ์ ์์ด ๋น ๋ฅธ ์๋ต์๊ฐ๊ณผ ๋ ์ข์ ์ฑ๋ฅ์ ์ป์์ ์๋ค
- ์๋ฒ ๋ถํ ๊ฐ์ : ํ์ํ ๋ฐ์ดํฐ๋ง ์ ์กํ๋ฏ๋ก ์ ์ฒด ํ์ด์ง๋ฅผ ์๋ก ๋ก๋ํ ํ์์์ด ์๋ฒ ๋ถํ๋ฅผ ์ค์ฌ์ค๋ค๊ณ ํ๋ค
- ์ฌ์ฉ์ ๊ฒฝํ ํฅ์ : ์ฑํ ๋ฉ์์ง ๊ฐ์ ์ค์๊ฐ ์ ๋ฐ์ดํธ์ ๊ฐ์ ๊ธฐ๋ฅ์์ ์ฌ์ฉ์ ๊ฒฝํ์ด ํฅ์๋๋ค
๋ํ ๊ธฐ๋ฅ
- ๊ตฌ๊ธ ๋งต
- ํฌํธ์ฌ์ดํธ ๊ฒ์๊ธฐ๋ฅ
- ๋๋ถ๋ฅ์ ํ์๋ถ๋ฅ ์กฐํ
API
onreadystatechange
โฌ ์ด๋ฒคํธ- XMLHRequest์ readyStatie ์ํ๊ฐ ๋ณ๊ฒฝ๋ ๋๋ง๋ค ์คํ๋ ์ฝ๋ฐฑํจ์
๐น ์ด๋ฒคํธ ํธ๋ค๋ฌ ๋ฑ๋ก
- ์ธ๋ผ์ธ ์ด๋ฒคํธ ํธ๋ค๋ฌ ๋ฑ๋ก
<button onclick="handler()">๋ฒํผ</button>
function handler() {
์ํ๋ฌธ;
}
- ์๋ฆฌ๋จผํธ ๊ฐ์ฒด์ ์ด๋ฒคํธ ํ๋กํผํฐ์ ์ด๋ฒคํธ ํธ๋ค๋ฌ ๋ฑ๋ก
<button id="btn">๋ฒํผ</button>
// 1. ์๋ฆฌ๋จผํธ๋ฅผ ์กฐํํ๋ค
let element = document.getElementById("btn");
// 2. ์๋ฆฌ๋จผํธ์ onclick ํ๋กํผํฐ์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ๋ฑ๋กํ๋ค
element.onclick = function () {
์ํ๋ฌธ;
}
// ํด๋น ์๋ฆฌ๋จผํธ์์ click ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด onclick ํ๋กํผํฐ์ ๋ฑ๋กํ ํจ์๋ฅผ ์คํํ๋ค
- ๊ฐ์ฒด์ addEventListener() ๋ฉ์๋๋ฅผ ์ฌ์ฉํด ์ด๋ฒคํธ ํธ๋ค๋ฌ ๋ฑ๋ก
<button id="btn">๋ฒํผ</button>
// 1. ์๋ฆฌ๋จผํธ๋ฅผ ์กฐํํ๋ค
let element = document.getElementById("btn");
// 2. ์๋ฆฌ๋จผํธ์ addEventListener() ๋ฉ์๋๋ฅผ ์ด์ฉํด ์ด๋ฒคํธ ํธ๋ค๋ฌ ๋ฑ๋ก
element.addEventListener("click", function () {
์ํ๋ฌธ;
})
// ํด๋น ์๋ฆฌ๋จผํธ์์ click ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด onclick ํ๋กํผํฐ์ ๋ฑ๋กํ ํจ์๋ฅผ ์คํํ๋ค
GET ๋ฐฉ์
$(document).ready(function() {
$.ajax({
type : 'get', // get๋ฐฉ์ ๋ช
์
url : 'AjaxTest.jsp', //์ด๋ํ JSPํ์ผ
dataType : 'text',
success : function(data) {
alert('๋ฐ์ดํฐ ' + data);
},
error:function() {
alert('์คํจ');
}
})
}
POST ๋ฐฉ์
<!DOCTYPE html>
<html>
<head>
<title>Ajax ์์ </title>
// script ์ฃผ์๋ฅผ ๋ช
์ ํด์ผ jQuery๋ฅผ ์ฌ์ฉ๊ฐ๋ฅํ๋ค
<script src="https://code.jquery.com/jquery-3.6.4.min.js"></script>
</head>
<body>
<button onclick="getData()">๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ</button>
<div id="result"></div>
<script>
function getData() {
$.ajax({
url: '์๋ฒ์_๋ฐ์ดํฐ_์ ๊ณต_URL',
type: 'GET', // ๋ฐ์ดํฐ ์ ์ก ํ์
date : // ๋ณด๋ด๋ ๋ฐ์ดํฐ ,
dataType : // ๋ฌธ์ํ์์ผ๋ก ๋ฐ๊ธฐ,
success: function(response) {
// ์์
์ด ์ฑ๊ณต์ ์ผ๋ก ๋ฐ์ํ์ ๊ฒฝ์ฐ ์๋ฒ์์ ๋ฐ์์จ ๋ฐ์ดํฐ๋ฅผ ํ์ด์ง์ ์
๋ฐ์ดํธ
$('#result').html(response);
},
error: function(error) {
// ์๋ฌ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ ์คํ๋ ์ฝ๋
console.log('์๋ฌ ๋ฐ์: ', error);
}
});
}
</script>
</body>
- ๋ฒํผ์ ํด๋ฆญํ๋ฉด Ajax getData() ํจ์ ๋ฅผ ์ฌ์ฉํด ์๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์จ๋ค
- result ๋ผ๋ id๋ฅผ ๊ฐ์ง div ์์์ ์ ๋ฐ์ดํธ๋ฅผ ํ๊ฒ๋๋ค.
// XMLHttp๊ฐ์ฒด ์์ฑ
let xhr = new XMLHttpRequest();
xhr.onreadystatechange = function () {
if (xhr.readyState == 4 && xhr.status == 200) {
let message = xhr.responseText;
if (message == "๊ฐ๋ฅ") {
// ์ฌ์ฉ๊ฐ๋ฅํ ๋ฉ์ธ์ง ์ถ๋ ฅ
} else {
//
//
// ์ฌ์ฉ ๋ถ๊ฐ๋ฅํ ๋ฉ์ธ์ง ์ถ๋ ฅ
}
}
};
xhr.open("GET", "checkId.jsp?id=rltjs987");
xhr.send();
readyState
- XMLHttpRequest ๊ฐ์ฒด์ ํ์ฌ ์ํ๋ฅผ ๋ฐํํ๋ค
- 0 : ์์ฒญ์ด ์ด๊ธฐํ ๋์ง ์์
- 1 : ์๋ฒ์ ์ฐ๊ฒฐ๋จ
- 2 : ์๋ฒ๊ฐ ์์ฒญ์ ๋ฐ์๋ค
- 3 : ์๋ฒ๊ฐ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ์ค์ด๋ค
- 4 : ์๋ฒ๊ฐ ์์ฒญ ์ฒ๋ฆฌ๋ฅผ ๋๋ด๊ณ ์๋ต๋ฐ์ดํฐ๋ ๋ณด๋ผ์ค๋น๊ฐ ๋์๋ค
status
- ์์ฒญ์ ๋ํ HTTP ์๋ต์ฝ๋๋ฅผ ๋ฐํํ๋ค
- 200 : OK
- 404 : Not Found
- 500 : Server Error
responseText
- ์๋ฒ๋ก๋ถํฐ ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ฌธ์์ด๋ก ๋ฐํํ๋ค
responseXML
- ์๋ฒ๋ก๋ถํฐ ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ
XML Document
๊ฐ์ฒด๋ก ๋ฐํํ๋ค
Method
let xhr = new XMLHttpRequest()
XMLHttpRequest
๊ฐ์ฒด ์์ฑ
xhr.open(method url , async , user , password)
XMLHttpRequest
๊ฐ์ฒด๋ฅผ ์ด๊ธฐํ ํ๋คmethod
: "GET" , "POST"url
: ์์ฒญ URLasync
: true(๋น๋๊ธฐ ๋์) , false (๋๊ธฐ์ ๋์)user/password
: ์ฌ์ฉ์ ์ธ์ฆ์ ๋ณด
xhr.send()
- ์๋ฒ๋ก ๋ถํฐ ๋ฐ์ ์์ฒญ์ ๋ณด๋ธ๋ค (GET ๋ฐฉ์์ ์์ฒญ์ผ ๋ ์ฌ์ฉ ํ๋ค)
xhr.setRequestHeader()
- POST ๋ฐฉ์์ผ ๋ HTTP ์์ฒญ ๋ฉ์ธ์ง์ ํค๋ ์ ๋ณด๋ฅผ ์ค์ ํ๋ค
xhr.open("POST","text.jsp"")
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded")
- POST ๋ฐฉ์์ผ ๋ HTTP ์์ฒญ ๋ฉ์ธ์ง์ ํค๋ ์ ๋ณด๋ฅผ ์ค์ ํ๋ค
xhr.send(string)
- ์๋ฒ๋ก ์์ฒญ์ ๋ณด๋ธ๋ค (POST ๋ฐฉ์์ ์์ฒญ์ผ ๋ ์ฌ์ฉํ๋ค)
xhr.send("title=์๋ &contents=์๋ ํ์ธ์")
๐ธ ์๋ฒ์ ์๋ต ์ปจํ ์ธ ์ ํ
text/html
- HTML ์ปจํ ์ธ ๋ฅผ ์๋ต ์ปจํ ์ธ ๋ก ์ ๊ณตํจ
- ์น ํ์ด์ง์ ๋ฐ๋ก ๋ฐ์ํ ์ ์๋ ์ปจํ ์ธ ๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ด๋ค
- AJax ์์ฒญ์ ๋ณด๋ธ ํด๋ผ์ด์ธํธ ์ธก์์๋ ๋ณ๋์ ์์ ์์ด ์๋ต์ผ๋ก ๋ฐ์ HTML ์ปจํ ์ธ ๋ฅผ ์น ํ์ด์ง์ ํน์ ์์ญ์ ๋ฐ์ ์ํคํค๋ง ํ๋ฉด๋๋ค
text/plain
- ์ผ๋ฐ ํ ์คํธ ์ปจํ ์ธ ๋ฅผ ์๋ต ์ปจํ ์ธ ๋ก ์ ๊ณตํจ
- ์๋ต ๋ฐ์ดํฐ๊ฐ ๋งค์ฐ ๋จ์ํ ๊ฐ์ผ ๋ ์ฌ์ฉ๋๋ค.
text/xml
- XML ํ์์ ์ปจํ ์ธ ๋ฅผ ์๋ต ์ปจํ ์ธ ๋ก ์ ๊ณตํจ
- ์๋ต ๋ฐ์ดํฐ๊ฐ ๋ค์ํ ๊ฐ์ด ์๋ ๋ ์ฌ์ฉ๋๋ค
- XML์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์ ๋ฌํ ๋ชฉ์ ์ผ๋ก ๋ง๋ค์ด์ก์ผ๋ฉฐ, ๋ฐ์ดํฐ์ ๊ตฌ์กฐ๋ฅผ ๊ธฐ์ ํ ์ ์๋ค
- XML์ ์๋ก ๋ค๋ฅธ ์์คํ
๋ผ๋ฆฌ ๋ค์ํ ์ข
๋ฅ์ ๋ฐ์ดํฐ๋ฅผ ์์ฝ๊ฒ ๊ตํํ ์ ์๊ฒ ํ๋ค
application/json
- JSON ํ์์ ์ปจํ ์ธ ๋ฅผ ์๋ต ์ปจํ ์ธ ๋ก ์ ๊ณตํจ
- ์๋ต ๋ฐ์ดํฐ๊ฐ ๋จ์ํ ๊ฐ์ด ์๋ ๋ ์ฌ์ฉ๋๋ค
- JSON์ XML๊ณผ ๋น๊ตํด ๋ ์ฝ๊ณ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๊ตํํ๊ธฐ ์ํด ์ค๊ณ๋ ํ
์คํธ ๊ธฐ๋ฐ์ ๋ฐ์ดํฐ ๊ตํ ํ์ค์ด๋ค
- JSON์ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ค๊ณ๋์์ผ๋ฉฐ XML์ ๋์์ผ๋ก์ ๊ณ ์๋์๋ค
- JSON์ XML๊ณผ ๋น๊ตํด์ ๊ฒฝ๋์ ๋ฐ์ดํฐ ๊ตํ ํ์ค์ด๋ค
728x90
'Language > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
03. DOM (0) | 2024.01.15 |
---|---|
02. ์ด๋ฒคํธ (1) | 2024.01.12 |
01. JavaScript (0) | 2024.01.12 |
pre-training JavaScript (9) (1) | 2023.10.20 |
pre-training JavaScript (8) ํจ์ , ๊ฐ์ฒด (1) | 2023.10.19 |