개발노트

고즐의 개발 및 서버 개발 노트

jQuery Ajax 없이 구현하는 현대적 웹 데이터 처리

# fetch통신 # JavaScript서버연동 # 웹CRUD # 프론트백엔드연결 # Ajax대체

Js 2025.12.11 12일 전 62 회 읽음 1



 이전에는 XMLHttpRequest(XHR) 명령을 사용해서 불편했는데 이제 서버와의 통신을 ajax나 jquery 없이 fetch() 라는 명령어로 쉽게 사용할 수 있다. 

fetch

브라우저에서 서버로 데이터를 주고받는 비동기 통신 기능(라이브러리 없이 순수 JS로 작동하는 최신 방식).

CRUD

데이터를 생성·조회·수정·삭제하는 서버·DB의 기본 동작 구조.



fetch 기반 서버 통신과 실전 CRUD 패턴 정리

fetch는 현대 JavaScript에서 서버와 데이터를 주고받는 표준 방식이다. jQuery Ajax를 완전히 대체하며, JSON 처리와 비동기 흐름을 단순하게 만든다. 본 글에서는 GET, POST, 오류 처리, PHP 연동, CRUD 구현까지 실전적으로 사용할 수 있는 패턴을 정리한다.

과거에는 $.ajax에 의존해 서버와 통신했지만, 이제는 fetch가 모든 기능을 안정적으로 제공한다. 코드가 간결하고 확장성이 높으며, 별도 라이브러리 없이 사용 가능하다는 점에서 현재 웹 개발 흐름에 완전히 부합한다. 특히 PHP와 함께 사용하는 경우 구조가 더 단순해진다.

1. 기본 GET 요청

서버에서 데이터를 가져오는 가장 단순한 형태의 fetch 요청이다.

fetch('/data/list.php')
    .then(res => res.json())
    .then(data => {
        console.log(data);
    });
  • 게시글 목록
  • 알림 개수
  • 환경설정 상태 조회

2. 기본 POST 요청

서버에 데이터를 보내야 하는 상황에서 가장 많이 사용하는 패턴이다.

fetch('/api/save.php', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ id: 1, title: 'sample' })
})
.then(res => res.text())
.then(result => {
    console.log(result);
});

PHP에서는 다음처럼 받는다.

$raw = file_get_contents('php://input');
$data = json_decode($raw, true);

3. JSON 응답 처리

대부분의 API는 JSON 전달을 기본으로 삼는다. res.json()을 사용하여 객체 형태로 바로 사용할 수 있다.

fetch('/api/info.php')
    .then(res => res.json())
    .then(json => {
        console.log(json.user);
    });

4. 오류 처리

통신 실패나 서버 오류를 대비해 예외 처리가 필요하다. fetch는 네트워크 오류만 catch로 감지되므로 상태 체크가 중요하다.

fetch('/api/check.php')
    .then(res => {
        if (!res.ok) throw new Error('Server Error');
        return res.json();
    })
    .then(data => console.log(data))
    .catch(err => console.error(err));

5. PHP와 연동되는 실전 토글 버튼

UI 요소 클릭 → fetch 요청 → 결과 반영까지 실제 웹사이트에서 가장 자주 사용하는 패턴이다.

// JS
btn.addEventListener('click', () => {
    const next = btn.dataset.state === '1' ? '0' : '1';

    fetch(`/api/toggle.php?nm=${btn.dataset.nm}&val=${next}`)
        .then(res => res.text())
        .then(() => {
            btn.dataset.state = next;
            btn.classList.toggle('active');
        });
});

6. 폼 데이터 전송 (multipart)

이미지 업로드나 파일 처리에는 FormData를 사용한다. JSON보다 유연하며 PHP의 $_FILES 처리와 자연스럽게 연결된다.

const fd = new FormData();
fd.append('title', 'sample');
fd.append('file', fileInput.files[0]);

fetch('/api/upload.php', {
    method: 'POST',
    body: fd
});

7. 실전 CRUD 패턴

게시글이나 데이터 관리 화면에서 자주 사용하는 서버 통신 패턴이다.

  • 목록 조회: GET
  • 상세 조회: GET + id
  • 저장: POST(JSON)
  • 삭제: POST(JSON)

예시: 삭제 요청

fetch('/api/delete.php', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ nm: 12 })
})
.then(res => res.text())
.then(result => {
    if (result === 'OK') item.remove();
});

8. fetch를 사용하면 얻는 장점

fetch는 간결하고 일관된 API를 제공하며, 브라우저 환경에서도 성능이 뛰어나다. 특히 jQuery Ajax보다 코드 길이가 짧고 직관적이기 때문에 유지보수가 훨씬 편해진다.

  • 추가 라이브러리 없이 사용 가능
  • JSON 기반 처리 최적화
  • 비동기 제어가 단순
  • PHP와 자연스럽게 동작

이로써 jQuery Ajax가 사라지고 fetch가 웹 개발의 기본 도구가 된 이유를 명확하게 이해할 수 있다.

이번 5편을 끝으로 기본 시리즈는 완성된다. 필요하다면 심화편으로 코드 구조화, 모듈 설계, 실제 UI 컴포넌트 제작 등을 이어갈 수 있다.

문의답변