JavaScript는 널리 사용되는 프로그래밍 언어인 반면, PHP는 서버 측에서 사용되는 스크립트 언어입니다. 웹 개발 과정에서 우리는 종종 이 두 언어를 결합해야 할 때가 있습니다. 이번 글에서는 JavaScript에 PHP 스크립트를 삽입하는 방법과 주의할 점을 자세히 소개하겠습니다.
1. JavaScript에 PHP 스크립트를 삽입해야 하는 이유는 무엇입니까? 웹 개발에서는 사용자가 입력한 데이터를 기반으로 실시간 결과를 계산하는 등 사용자의 행동에 따라 페이지의 내용을 동적으로 업데이트해야 하는 경우가 많습니다. 사용자가 선택한 옵션에 따라 동적으로 다른 콘텐츠를 표시합니다. 이러한 기능을 사용하려면 일반적으로 JavaScript를 사용해야 합니다.
서버 측에서는 동적 데이터의 생성과 출력을 처리하기 위해 PHP를 사용하는 경우가 많습니다. 예를 들어 사용자가 양식 데이터를 제출한 후 데이터를 서버로 보내고 PHP를 사용하여 처리한 다음 마지막으로 처리된 결과를 사용자에게 반환해야 합니다. 이러한 방식으로 서버와 클라이언트 간의 데이터 상호 작용 목적을 달성하려면 JavaScript에 PHP 스크립트를 포함해야 합니다.
2. Ajax 기술을 사용하여 중첩 달성
JavaScript에서 PHP 스크립트를 중첩하는 가장 일반적인 방법은 Ajax 기술을 사용하는 것입니다.
Ajax는 전체 페이지를 새로 고치지 않고도 비동기 요청을 보내고 페이지 일부를 업데이트할 수 있는 비동기 웹 애플리케이션을 생성하기 위한 기술 집합입니다. 일반적으로 우리는 페이지의 JavaScript에 Ajax 코드를 작성하고 JavaScript를 사용하여 서버에 요청을 보내고 서버는 처리된 데이터를 반환하며 마지막으로 JavaScript를 사용하여 페이지에 데이터를 업데이트합니다.
Ajax 기술을 사용하는 경우 먼저 XMLHttpRequest 객체를 생성한 다음 이 객체를 사용하여 서버에 요청을 보내야 합니다. 다음은 일반적인 Ajax 코드입니다.
var xhr = new XMLHttpRequest(); xhr.open('POST', 'example.php', true); xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); xhr.onload = function () { //处理返回的数据 }; xhr.send('data=value');
이 코드에서는 먼저 XMLHttpRequest 객체를 생성하고 요청 메서드(POST), 대상 URL 및 open 메서드를 통해 비동기인지 여부를 지정합니다. 그런 다음 요청된 데이터 유형이 application/x-www-form-urlencoded임을 서버에 알리기 위해 setRequestHeader 메소드를 통해 요청 헤더를 설정합니다. 다음으로, onload 메소드에서 서버로부터 반환된 데이터를 처리합니다. 마지막으로 send 메소드를 사용하여 서버에 요청을 보내고 데이터 데이터를 값으로 설정합니다.
PHP 스크립트에서는 $_POST 배열을 사용하여 클라이언트가 제출한 데이터를 가져올 수 있습니다. 다음은 간단한 PHP 예제입니다.
<?php $data = $_POST['data']; $result = doSomethingWithData($data); echo $result; ?>
이 예제에서는 먼저 $_POST 배열을 사용하여 클라이언트가 제출한 데이터를 가져온 다음 doSomethingWithData 함수를 사용하여 데이터를 처리하고 결과를 출력합니다.
3. 교차 도메인 요청 처리
Ajax 기술을 사용할 때 문제, 즉 교차 도메인 요청의 제한에 주의해야 합니다. 교차 도메인 요청은 http://example.com에서 http://localhost:8080으로 요청을 보내는 것과 같이 다른 도메인 이름이나 포트로 요청을 보내는 요청을 의미합니다.
교차 도메인 요청에 대한 제한은 브라우저에 의해 시행됩니다. 기본적으로 브라우저는 도메인 간 요청을 허용하지 않으며 비슷한 오류 메시지를 콘솔에 출력합니다.
Access to XMLHttpRequest at 'http://localhost:8080/example.php' from origin 'http://example.com' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
도메인 간 요청의 제한 사항을 해결하기 위해 CORS(Cross-Origin Resource Sharing) 헤더 정보를 추가할 수 있습니다. 서버 측에서 Access-Control-Allow-Origin 헤더를 응답에 추가하고 도메인 간 요청을 허용하는 도메인 이름 목록을 설정합니다. PHP에서는 CORS 헤더를 다음과 같이 추가할 수 있습니다.
header('Access-Control-Allow-Origin: http://example.com');
위 코드는 http://example.com의 교차 출처 요청을 허용합니다.
CORS 헤더를 추가하는 것 외에도 JSONP(JSON with Padding)를 사용하여 도메인 간 요청을 구현할 수도 있습니다. JSONP는