Mã của bạn được chia thành hai phần hoàn toàn riêng biệt, phía máy chủ và phía máy khách .
|
---------->
HTTP request
|
+--------------+ | +--------------+
| | | | |
| browser | | | web server |
| (JavaScript) | | | (PHP etc.) |
| | | | |
+--------------+ | +--------------+
|
client side | server side
|
<----------
HTML, CSS, JavaScript
|
Hai bên liên lạc qua các yêu cầu và phản hồi HTTP. PHP được thực thi trên máy chủ và xuất ra một số HTML và có thể mã JavaScript được gửi dưới dạng phản hồi cho máy khách nơi HTML được diễn giải và JavaScript được thực thi. Khi PHP đã hoàn thành xuất ra phản hồi, tập lệnh kết thúc và sẽ không có gì xảy ra trên máy chủ cho đến khi có yêu cầu HTTP mới.
Mã ví dụ thực thi như thế này:
<script type="text/javascript">
var foo = 'bar';
<?php
file_put_contents('foo.txt', ' + foo + ');
?>
var baz = <?php echo 42; ?>;
alert(baz);
</script>
Bước 1, PHP thực thi tất cả mã giữa <?php ?>
các thẻ. Kết quả là thế này:
<script type="text/javascript">
var foo = 'bar';
var baz = 42;
alert(baz);
</script>
Cuộc file_put_contents
gọi không dẫn đến kết quả gì, nó chỉ ghi "+ foo +" vào một tệp. Cuộc <?php echo 42; ?>
gọi dẫn đến kết quả đầu ra "42", hiện đang ở vị trí mà mã được sử dụng.
Mã HTML / JavaScript kết quả này hiện được gửi đến máy khách, nơi nó được đánh giá. Cuộc alert
gọi hoạt động, trong khi foo
biến không được sử dụng ở bất cứ đâu.
Tất cả mã PHP được thực thi trên máy chủ trước khi máy khách thậm chí bắt đầu thực thi bất kỳ JavaScript nào. Không còn mã PHP nào trong phản hồi mà JavaScript có thể tương tác.
Để gọi một số mã PHP, máy khách sẽ phải gửi một yêu cầu HTTP mới đến máy chủ. Điều này có thể xảy ra bằng một trong ba phương pháp có thể:
- Một liên kết, khiến trình duyệt tải một trang mới.
- Một biểu mẫu gửi, gửi dữ liệu đến máy chủ và tải một trang mới.
- Một AJAX yêu cầu, mà là một kỹ thuật Javascript để thực hiện một yêu cầu HTTP thông thường đến máy chủ (như 1. và 2. sẽ), nhưng mà không rời khỏi trang hiện tại.
Đây là một câu hỏi phác thảo các phương pháp này chi tiết hơn
Bạn cũng có thể sử dụng JavaScript để làm cho trình duyệt mở một trang mới bằng cách sử dụng window.location
hoặc gửi biểu mẫu, mô phỏng các khả năng 1. và 2.
window.open
hoặc tải trang bằng iframe.