รหัสของคุณจะถูกแบ่งออกเป็นสองส่วนแยกที่ฝั่งเซิร์ฟเวอร์และฝั่งไคลเอ็นต์
|
---------->
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
ตัวแปรไม่ได้ใช้ที่ใดก็ได้
รหัส PHP ทั้งหมดจะถูกดำเนินการบนเซิร์ฟเวอร์ก่อนที่ลูกค้าจะเริ่มดำเนินการใด ๆ ของ JavaScript ไม่มีโค้ด PHP เหลืออยู่ในการตอบกลับที่ JavaScript สามารถโต้ตอบได้
ในการโทรหารหัส PHP ลูกค้าจะต้องส่งคำขอ HTTP ใหม่ไปยังเซิร์ฟเวอร์ สิ่งนี้สามารถเกิดขึ้นได้โดยใช้หนึ่งในสามวิธีที่เป็นไปได้:
- ลิงค์ซึ่งทำให้เบราว์เซอร์โหลดหน้าใหม่
- การส่งแบบฟอร์มซึ่งส่งข้อมูลไปยังเซิร์ฟเวอร์และโหลดหน้าใหม่
- AJAXคำขอซึ่งเป็นเทคนิคจาวาสคริปต์ที่จะทำให้การร้องขอ HTTP ปกติไปยังเซิร์ฟเวอร์ (เช่น 1. และ 2. ความประสงค์) แต่ไม่ต้องออกจากหน้าปัจจุบัน
ต่อไปนี้เป็นคำถามที่สรุปวิธีการเหล่านี้โดยละเอียดยิ่งขึ้น
คุณยังสามารถใช้ JavaScript เพื่อทำให้เบราว์เซอร์เปิดหน้าใหม่โดยใช้window.location
หรือส่งแบบฟอร์มโดยจำลองความเป็นไปได้ที่ 1 และ 2
window.open
หรือโหลดหน้าโดยใช้ iframe