코드는 서버 측 과 클라이언트 측으로 완전히 분리 된 두 부분으로 나뉩니다 .
|
---------->
HTTP request
|
+--------------+ | +--------------+
| | | | |
| browser | | | web server |
| (JavaScript) | | | (PHP etc.) |
| | | | |
+--------------+ | +--------------+
|
client side | server side
|
<----------
HTML, CSS, JavaScript
|
양측은 HTTP 요청 및 응답을 통해 통신합니다. PHP는 서버에서 실행되며 HTML이 해석되고 JavaScript가 실행되는 클라이언트에 대한 응답으로 전송되는 일부 HTML 및 JavaScript 코드를 출력합니다. PHP가 응답 출력을 마치면 스크립트가 종료되고 새로운 HTTP 요청이 올 때까지 서버에서 아무 일도 일어나지 않습니다.
예제 코드는 다음과 같이 실행됩니다.
<script type="text/javascript">
var foo = 'bar';
<?php
file_put_contents('foo.txt', ' + foo + ');
?>
var baz = <?php echo 42; ?>;
alert(baz);
</script>
1 단계 : PHP는 <?php ?>
태그 사이의 모든 코드를 실행 합니다. 결과는 다음과 같습니다.
<script type="text/javascript">
var foo = 'bar';
var baz = 42;
alert(baz);
</script>
이 file_put_contents
호출은 아무것도 발생하지 않았으며 파일에 "+ foo +"를 썼습니다. 이 <?php echo 42; ?>
호출로 인해 출력 "42"가 발생했으며, 이제 해당 코드가 있던 위치에 있습니다.
이 결과 HTML / JavaScript 코드가 이제 클라이언트로 전송되어 평가됩니다. alert
그동안 호출은, 작동 foo
변수가 임의의 장소에서 사용되지 않습니다.
클라이언트가 JavaScript를 실행하기 전에 모든 PHP 코드가 서버에서 실행됩니다. JavaScript가 상호 작용할 수있는 응답에 PHP 코드가 남아 있지 않습니다.
일부 PHP 코드를 호출하려면 클라이언트가 서버에 새로운 HTTP 요청을 보내야합니다. 가능한 세 가지 방법 중 하나를 사용하여 발생할 수 있습니다.
- 브라우저가 새 페이지를로드하게하는 링크입니다.
- 서버에 데이터를 제출하고 새 페이지를로드하는 양식 제출.
- AJAX와 자바 스크립트 기술이다 요청은, (1, 2 것처럼)하지만, 현재 페이지를 떠나지 않고 서버에 정기적으로 HTTP 요청을합니다.
이러한 방법을보다 자세하게 설명하는 질문이 있습니다.
JavaScript를 사용하여 window.location
양식 1을 사용 하거나 양식을 사용하여 브라우저에서 새 페이지를 열도록 하여 가능성 1과 2를 모방 할 수도 있습니다.
window.open
iframe을 사용 하여 두 번째 페이지를 열거 나 페이지를 로드 할 수도 있습니다 .