PHP 및 AJAX - 코드 단순화

10446 단어 phpjavascriptajax
요즘에는 모든 앱에서 AJAX를 사용해야 합니다. 속도가 빠르고 성가신 페이지 다시 로드를 방지하기 때문입니다. 이 가이드에서는 PHP 앱에서 AJAX 요청을 처리하는 방법을 보여줍니다.

1단계 - 폴더/파일 구조



정리는 모든 응용 프로그램의 중요한 부분입니다. PHP 애플리케이션에서는 각 AJAX 요청에 대해 별도의 파일을 만드는 것이 좋습니다.

/
  /ajax
     ...ajax handler files


더 정리해야 하는 경우 AJAX 파일을 그룹화할 수 있습니다.

/
  /ajax
    /posts
       ...posts files
    /comments
       ...comments files
    /misc
       ...misc files


2단계 - PHP + AJAX



AJAX의 경우 모든 데이터 구조를 사용할 수 있습니다. 하지만 JSON 을 선호합니다.

기본적으로 각 파일은 하나의 작업을 처리합니다. 그 작업은 성공하거나 실패할 수 있습니다. AJAX 요청의 JSON 응답에서 가장 중요한 키는 status 이며 Boolean 값을 갖습니다.

Handler 클래스를 만들어 봅시다. 저는 보통 /src 폴더에 클래스 파일을 저장합니다.

src/Ajax.php

<?php
class Ajax {

    static function setJSONHeader() {
        header('Content-type', 'application/json');
    }

    static function success($returnArray = null) {

        $array = array (
            'status' => true
        );

        if ($returnArray !== null) {
            $array = array_merge($returnArray, $array);
        }

        self::setJSONHeader();
        exit(json_encode($array));
    }


    static function error($errorMessage = '', $errorCode = 0) {

        self::setJSONHeader();
        exit(json_encode(array(
            'status' => false,
            'error' => $errorMessage,
            'errorCode' => $errorCode 
        )));

    }

}


이 클래스에는 세 가지static methods가 포함됩니다. Ajax::success($array) 요청이 성공하면 호출할 수 있습니다. $array 클라이언트 측에 보낼 더 많은 데이터를 포함할 수 있습니다. Ajax::error() 오류가 발생하면 호출할 수 있습니다.

3단계 - 모두 함께



이 모든 방법을 결합해 보겠습니다. 사용자가 게시물을 작성할 수 있는 앱이 있다고 가정합니다. 다음은 jQuery의 AJAX 요청 예입니다.

function createPost(title, text) {
    $.ajax({
        method: "POST",
        url: "/ajax/create-post.php",
        data: {
            title, text // es6
        },
        dataType: "json", // gonna receive JSON
        success: (json) => {
            if (json.status === true) {
               // enjoy!
               location.href = `/${json.slug}`;
            } else {
               // oopz :(
               alert(json.error);
            }
        }
    })
}


create-post.php - PHP AJAX 핸들러

<?php
include_once 'autoload.php'; // your autoloader

// make sure you also do trim() and htmlspecialchars()
$title = $_POST['title'] ?? '';
$text = $_POST['text'] ?? ''; 

if (empty($title)) 
   Ajax::error('Title cannot be empty');
if (empty($text))
   Ajax::error('Text cannot be empty');

$slug = createSlug($title); // something to be sent to the client side

// add to database (thingengineer/mysqli-database-class)
$added = $mysqli -> insert('posts', array(
   'title' => $title,
   'text' => $text,
   'slug' => $slug
));

if (!$added)
   Ajax::error('Something went wrong on creating the post');

Ajax::success(array(
   'slug' => $slug
));


이런 식으로 약간의 코드로 PHP에서 AJAX 핸들러를 작성할 수 있습니다. 트릭은 OOP을 사용하여 상태와 데이터를 처리하는 것입니다.

다음 PHP + AJAX 애플리케이션에 행운을 빕니다.

좋은 웹페이지 즐겨찾기