티스토리 뷰
# AJAX 방식이란? form 방식과의 차이점 / 동기와 비동기가 도대체 뭐야? / JSON 까지 완벽 파악하기 (+ 파이썬 딕셔너리와 비교)
eblessyou 2026. 5. 7. 14:41
내 질문:
메인 페이지는 이미 AJAX 방식이라 정상.
상세 페이지는 아직 form 방식이라 like_toggle.php로 이동함.
그래서 post_view.php도 form → button + fetch 방식으로 바꾸면 해결됨.
여기서 AJAX 방식이 뭘 의미하는 거야?
그리고 form 방식과 무슨 차이가 있는지도 알려줘.
form -> button+fetch 방식으로 바꾼다는 것도
각각 무슨 특징이 있고, 어떤 차이가 있는지에 대해서 알기 쉽게 설명해줬으면 좋겠어.
좋은 질문이다 👍 이거 이해하면 웹 개발 흐름이 훨씬 명확해져.
1️⃣ AJAX 방식이란?
AJAX는 쉽게 말하면:
👉 페이지를 새로고침하지 않고 서버와 통신하는 방식
이야.
예를 들어:
- 좋아요 버튼 클릭
- 댓글 작성
- 검색 자동완성
이런 것들이 화면 그대로 유지된 채 데이터만 바뀌는 것 → AJAX
핵심 특징
- 페이지 이동 ❌
- 새로고침 ❌
- 필요한 데이터만 서버랑 주고받음
- 사용자 입장에서 훨씬 부드러운 UX
fetch('like_toggle.php', {
method: 'POST',
body: ...
})
.then(res => res.json())
.then(data => {
// 좋아요 수만 업데이트
})
2️⃣ form 방식이란?
form 방식은 우리가 가장 기본적으로 배우는 방식
👉 서버로 요청하면 페이지 자체가 이동됨
예시:
<form action="like_toggle.php" method="POST">
<button type="submit">좋아요</button>
</form>
동작 흐름
- 버튼 클릭
- like_toggle.php로 이동
- 서버 처리
- 새로운 페이지 로딩
3️⃣ AJAX vs form 차이 (핵심 비교)
| 페이지 이동 | 있음 | 없음 |
| 새로고침 | 있음 | 없음 |
| 속도 체감 | 느림 | 빠름 |
| UX | 끊김 있음 | 부드러움 |
| 구현 난이도 | 쉬움 | 조금 더 어려움 |
4️⃣ "form → button + fetch" 의미
이건 진짜 중요한 포인트야 👇
기존 (form 방식)
<form action="like_toggle.php" method="POST">
<button type="submit">좋아요</button>
</form>
👉 버튼 누르면 페이지 이동
변경 (AJAX 방식)
<button id="likeBtn">좋아요</button>
<script>
document.getElementById('likeBtn').addEventListener('click', () => {
fetch('like_toggle.php', {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
body: 'post_id=1'
})
.then(res => res.json())
.then(data => {
console.log(data);
});
});
</script>
👉 버튼 누르면:
- 페이지 이동 ❌
- like_toggle.php랑 통신만 함
- 결과 받아서 화면 일부만 변경
5️⃣ 왜 post_view.php를 바꿔야 하냐?
지금 상황 정리해보면:
- 메인 페이지 👉 AJAX ✅
- 상세 페이지 👉 form ❌ (페이지 이동 발생)
그래서 문제:
👉 UX가 일관되지 않음
해결:
👉 상세 페이지도 AJAX로 통일
6️⃣ 한 줄 정리
- form 방식 = "페이지 이동 중심"
- AJAX 방식 = "데이터만 교환"
- button + fetch = AJAX 구현 방법
7️⃣ 감각적으로 이해하면
- form 방식 👉 "편지 보내고 답장 기다리면서 자리 이동"
- AJAX 👉 "카톡 보내고 바로 답 받음"
내 질문:
AJAX가 약자라면, 뭐의 줄임말인지 알려줄래?
AJAX는 약자 맞아 👍
👉 Asynchronous JavaScript And XML 의 줄임말이야.
하나씩 풀어서 보면
1️⃣ Asynchronous (비동기)
👉 가장 핵심!
- 동시에 여러 작업 처리
- 서버 응답 기다리는 동안 페이지 멈추지 않음
👉 이게 AJAX의 핵심 특징
2️⃣ JavaScript
👉 브라우저에서 동작하는 언어
- 버튼 클릭 감지
- 서버 요청 보내기
- 결과 받아서 화면 변경
3️⃣ And XML
👉 원래는 데이터 형식으로 XML을 썼음
근데 요즘은 거의 이렇게 바뀜:
- XML ❌
- JSON ✅ (훨씬 많이 씀)
그래서 실제로는:
👉 "AJAX = 비동기 JavaScript 통신" 정도로 이해하면 됨
현실적인 의미 (중요)
이름은 길지만 실제 의미는 간단해👇
👉 "JavaScript로 서버랑 몰래 통신하는 기술"
- 페이지 이동 없음
- 뒤에서 데이터만 주고받음
한 줄 정리
👉 AJAX =
비동기로(JavaScript로) 서버랑 데이터만 주고받는 방식
내 질문:
동기랑 비동기가 뭔지,
차이점이 어떤 식으로 다른지를 이해하기 쉽게 설명해주고,
XML을 거의 안 쓰고 JSON을 쓴다고 했는데, 그럼에도 계속 AJAX가 많이 쓰여?
JSON은 뭐야?
좋아, 이건 진짜 핵심 개념이라 제대로 잡아주면 웹 개발 이해도가 확 올라간다 👍
최대한 감각적으로 이해되게 설명해볼게.
1️⃣ 동기 vs 비동기 (핵심 개념)
🔵 동기 (Synchronous)
👉 하나 끝날 때까지 무조건 기다림
예시 (현실 비유)
- 은행 창구
- 앞사람 끝날 때까지 기다려야 함
코드 느낌
A 실행 → 끝날 때까지 대기 → B 실행
👉 순서대로만 진행됨
🔴 비동기 (Asynchronous)
👉 기다리지 않고 다음 작업 먼저 진행
예시 (현실 비유)
- 카페 주문하고 진동벨 받기 ☕
- 기다리지 않고 자리 가 있음
- 준비되면 알려줌
코드 느낌
A 실행 (서버 요청)
→ 기다리지 않음
→ B 실행
→ 나중에 A 결과 오면 처리
2️⃣ 웹에서 차이 (진짜 중요)
🔵 form 방식 = 동기 느낌
<form action="like_toggle.php">
👉 버튼 누르면:
- 서버 요청
- 👉 화면 멈춤
- 👉 페이지 이동
- 👉 결과 나오면 새 페이지
➡️ 사용자 입장: "끊김" 느낌
🔴 AJAX = 비동기
fetch('like_toggle.php')
👉 버튼 누르면:
- 서버 요청
- 👉 화면 그대로 유지
- 👉 다른 행동 가능
- 👉 결과만 받아서 일부 업데이트
➡️ 사용자 입장: "부드러움"
3️⃣ 한 방에 이해하는 차이
| 라면 끓이기 | 물 끓을 때까지 멍때림 | 물 끓이는 동안 TV 봄 |
| UX | 끊김 | 자연스러움 |
| 웹 | form | AJAX |
4️⃣ XML vs JSON
이제 두 번째 질문 👇
🔵 XML이란?
👉 옛날 데이터 형식
<user>
<name>수지</name>
<age>20</age>
</user>
특징
- 태그 많음 😅
- 길고 복잡
- 읽기 불편
🔴 JSON이란?
👉 지금 표준처럼 쓰는 데이터 형식
{
"name": "수지",
"age": 20
}
특징
- 짧음 👍
- JavaScript랑 찰떡궁합
- 읽기 쉬움
5️⃣ AJAX인데 왜 JSON을 쓰냐?
이거 헷갈리기 쉬운 포인트 👇
👉 AJAX는 통신 방식
👉 JSON은 데이터 형식
비유로 보면
- AJAX = 📦 "택배 보내는 방법"
- JSON = 📄 "택배 안에 들어있는 내용"
6️⃣ 지금도 AJAX 많이 쓰냐?
👉 엄청 많이 씀 (거의 기본)
다만 이름이 조금 바뀐 느낌:
- 예전: XMLHttpRequest (AJAX)
- 지금: fetch API, axios
실제로는 이렇게 생각하면 됨
👉 AJAX = 개념
👉 fetch = 구현 방법
7️⃣ 전체 흐름 정리
👉 버튼 클릭
→ fetch (AJAX 방식)
→ 서버 요청
→ JSON으로 응답
→ 화면 일부만 업데이트
🔥 핵심 요약 (진짜 중요)
- 동기 = 기다림 (form)
- 비동기 = 안 기다림 (AJAX)
- AJAX = 통신 방식
- JSON = 데이터 형식
- 요즘은 AJAX + JSON + fetch 조합이 기본
내 질문:
JSON에 대해서 아직도 잘 모르겠어.
지금 표준처럼 쓰는 데이터 형식이라고 했는데,
php처럼 따로 있는 형식인 거야,
아니면 지금 쓰고 있는 php나 sql 이런 것들이 다 json을 바탕으로 쓰고 있다는 거야?
완벽하게 개념을 이해할 수 있게 다양한 예시를 들어서 설명해줬으면 좋겠어.
좋다 👍 이건 많은 사람들이 헷갈리는 부분이라 제대로 잡아줄게.
결론부터 말하면:
👉 JSON은 “프로그래밍 언어”가 아니라 “데이터를 표현하는 방식(형식)”이야.
1️⃣ JSON은 뭐냐? (핵심 정의)
👉 JSON = 데이터를 정리해서 전달하기 위한 규칙
- PHP ❌ (언어 아님)
- SQL ❌ (언어 아님)
- 👉 그냥 데이터 모양
2️⃣ 쉽게 비유해보자
📦 상황
너가 친구한테 정보를 보낸다고 생각해보자
❌ 아무 규칙 없이 보내면
수지 20 서울
👉 이건 사람이 봐야 이해됨
👉 컴퓨터는 해석하기 어려움
✅ JSON 방식으로 보내면
{
"name": "수지",
"age": 20,
"city": "서울"
}
👉 누가 봐도 구조가 명확함
👉 컴퓨터가 처리하기 쉬움
3️⃣ JSON 구조 핵심
기본 형태
{
"키": 값
}
예시
{
"id": "user1",
"email": "test@test.com",
"age": 25
}
👉 key-value 구조라고 부름
4️⃣ 배열도 가능
{
"users": [
{"name": "수지"},
{"name": "철수"}
]
}
👉 리스트도 표현 가능
5️⃣ PHP랑 JSON 관계
여기 중요 👇
👉 PHP는 JSON을 “만들고/읽는” 역할
🔵 PHP → JSON 만들기
$data = [
"name" => "수지",
"age" => 20
];
echo json_encode($data);
👉 출력 결과:
{"name":"수지","age":20}
🔴 JSON → PHP로 받기
$json = '{"name":"수지","age":20}';
$data = json_decode($json, true);
echo $data['name']; // 수지
👉 즉,
- PHP = 요리사 👨🍳
- JSON = 음식 담는 그릇 🍽️
6️⃣ SQL이랑 JSON 관계
👉 SQL은 데이터 저장용 (DB)
👉 JSON은 데이터 전달용
예시
DB에 저장된 데이터 (SQL)
| 1 | 수지 | 20 |
PHP가 가져와서 JSON으로 변환
{
"id": 1,
"name": "수지",
"age": 20
}
👉 프론트(JavaScript)로 전달
7️⃣ 왜 JSON을 쓰냐?
이유 1️⃣ JavaScript랑 찰떡궁합
const data = {
name: "수지",
age: 20
};
👉 JSON이랑 거의 똑같음
이유 2️⃣ 가볍고 빠름
XML:
<name>수지</name>
JSON:
"name": "수지"
👉 훨씬 간단
이유 3️⃣ 모든 언어가 지원
- PHP
- Python
- Java
- JavaScript
👉 다 JSON 사용 가능
8️⃣ 실제 웹에서 흐름
너 프로젝트 기준으로 보면 👇
1️⃣ 버튼 클릭 (JS)
fetch('like_toggle.php')
2️⃣ PHP 처리
echo json_encode([
"status" => "success",
"likes" => 10
]);
3️⃣ JS에서 받음
.then(res => res.json())
.then(data => {
console.log(data.likes);
});
👉 이게 바로:
👉 AJAX + JSON 조합
9️⃣ 핵심 오해 정리
❌ JSON이 언어다
👉 아님
❌ PHP나 SQL이 JSON 기반이다
👉 아님
✅ JSON은 그냥 데이터 포맷
👉 데이터를 “정리해서 전달하는 규칙”
🔥 한 줄 정리
👉 JSON = 서버와 클라이언트가 대화할 때 쓰는 공통 언어 같은 데이터 형식
💡 진짜 이해 체크 질문
이 질문에 답할 수 있으면 완벽 이해한 거야 👇
👉 "PHP는 왜 JSON을 만들어서 JS에 보내는 걸까?"
내 질문:
그럼 파이썬의 딕셔너리를 json이라고 볼 수 있는 거야?
이 질문 진짜 핵심 잘 짚었다 👍
결론부터 정확하게 말해줄게:
👉 “비슷하다”는 맞지만, “같다”는 아님
1️⃣ 한 줄 결론
👉 파이썬 딕셔너리 ≠ JSON
👉 하지만 👉 거의 똑같이 생긴 구조라서 서로 변환 가능
2️⃣ 실제로 비교해보자
🔵 파이썬 딕셔너리
user = {
"name": "수지",
"age": 20
}
🔴 JSON
{
"name": "수지",
"age": 20
}
👉 거의 똑같지?
그래서 많은 사람들이 헷갈림 😄
3️⃣ 결정적인 차이 (중요🔥)
1️⃣ 딕셔너리는 "파이썬 객체"
👉 코드 안에서 사용하는 데이터
print(user["name"])
👉 바로 사용 가능
2️⃣ JSON은 "문자열 형태의 데이터"
👉 파일, 네트워크로 주고받기 위한 형식
import json
json_str = '{"name": "수지", "age": 20}'
👉 그냥 텍스트야
4️⃣ 서로 변환하는 게 핵심
이게 진짜 중요 👇
🔵 딕셔너리 → JSON
import json
user = {"name": "수지", "age": 20}
json_str = json.dumps(user)
print(json_str)
👉 결과:
{"name": "수지", "age": 20}
🔴 JSON → 딕셔너리
import json
json_str = '{"name": "수지", "age": 20}'
user = json.loads(json_str)
print(user["name"])
👉 다시 파이썬에서 사용 가능
5️⃣ 왜 이렇게 나눠져 있냐?
👉 역할이 다르기 때문
| 딕셔너리 | 프로그램 내부에서 데이터 다루기 |
| JSON | 프로그램끼리 데이터 주고받기 |
6️⃣ 비유로 이해하면
- 딕셔너리 👉 🧠 "내 머릿속 생각"
- JSON 👉 💬 "남한테 말할 때 사용하는 언어"
7️⃣ 웹 개발 흐름으로 보면
Python 서버 기준
# 서버 내부
data = {"likes": 10} # 딕셔너리
# 클라이언트로 보낼 때
json_data = json.dumps(data) # JSON 변환
👉 브라우저는 JSON으로 받음
8️⃣ 핵심 요약
👉 딕셔너리 = 내부 데이터 구조
👉 JSON = 외부 전달용 데이터 형식
👉 둘은:
- 구조는 거의 같고
- 역할은 다르다
🔥 완벽 이해 포인트
👉 “딕셔너리를 JSON이라고 부르면 틀린 건 아니지만 정확하진 않다”
✔ 정확한 표현:
👉 "딕셔너리는 JSON으로 쉽게 변환 가능한 구조다"
By. ChatGPT
'몸부림의 흔적' 카테고리의 다른 글
| # CRUD와 insert/select/update/delete가 무엇인지. 이 두 개념의 차이점에 대해서 완벽 파헤치기...!!! (0) | 2026.05.08 |
|---|---|
| # JSON encode와 decode / fetch() 사용 방식과 흐름 / JavaScript 화살표 함수 이해하기 / res 의미 / JSON 개념 완전 이해하기 (0) | 2026.05.08 |
| # SQL 핵심 개념1 - '바인딩(Binding)'이란 무엇인지. (0) | 2026.05.06 |
| # 데이터베이스 언어의 3가지 종류에 관해서 (DDL / DML / DCL) (0) | 2026.05.06 |
| # 초보자도 알기 쉬운 SQL 핵심 개념과 문법 그리고 예시까지. (0) | 2026.05.04 |
- Total
- Today
- Yesterday
- PHP 문법
- 톰 더 글로우 시그니처
- sql 문법
- 컴파일러 인터프리터 비교
- 클래스 개념
- sql 핵심 개념
- cost let var 비교
- 나무 같은 사람이 되고 싶다
- 구조체 개념 이해하기 쉽게
- 로즈마리
- 클래스랑 구조체 차이
- 구조체와 배열의 차이
- 국제운전면허증 발급
- 로즈마리 물꽂이
- 은구비공원
- 컴파일러와 인터프리터 차이
- 프리지아
- 컴포즈 커피
- $stmt
- php
- 자바스크립트 주요 키워드
- php문법
- 파충류 동반자
- SQL 개념
- 호이스팅 개념
- CRUD
- JavaScript
- 컴파일러 언어
- php 개념
- 에어프라이어 청소
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
