ในการจัดระเบียบการสื่อสารเชิงโต้ตอบระหว่างผู้เยี่ยมชมและเว็บไซต์ (หรือมากกว่าเบราว์เซอร์กับเว็บเซิร์ฟเวอร์) โปรแกรมเมอร์จำเป็นต้องจัดเตรียมสถานการณ์จำลองสำหรับการแลกเปลี่ยนข้อมูลระหว่างกัน ลองพิจารณาตัวเลือกง่ายๆ หลายประการสำหรับการจัดการการถ่ายโอนตัวแปรจากสคริปต์ JavaScrip ของไคลเอ็นต์ไปยังสคริปต์ PHP ของเซิร์ฟเวอร์ และในทางกลับกัน
มันจำเป็น
ความรู้พื้นฐานเกี่ยวกับภาษา PHP, JavaScript และ HTML
คำแนะนำ
ขั้นตอนที่ 1
ในขั้นตอนของการสร้างหน้า การถ่ายโอนตัวแปรพร้อมกับค่าจากสคริปต์ php ไปยังสคริปต์ JavaScript นั้นไม่ใช่เรื่องยาก สคริปต์ PHP เองสร้างโค้ด HTML ของหน้าที่ร้องขอ รวมถึงสคริปต์ที่มีอยู่ ซึ่งหมายความว่าเขาสามารถเขียนตัวแปรใดๆ ลงในโค้ด JavaScript ที่ควรส่งไปพร้อมกับค่าของตัวแปรเหล่านั้น ตัวอย่างเช่น สคริปต์ php นี้จะส่งผ่านตัวแปรชื่อ "serverTime" ไปยังสคริปต์ไคลเอ็นต์ ซึ่งประกอบด้วยเวลาของเซิร์ฟเวอร์ปัจจุบันในรูปแบบ HOUR: MINUTE:
<?php
$ JSvarName = 'เวลาเซิร์ฟเวอร์';
$ JSvarValue = วันที่ ('H: i');
$ JScode = $ JSvarName. '= "'. $ JSvarValue. '";';
พิมพ์ ''. $ JScode.'alert ("และบนเซิร์ฟเวอร์เดี๋ยวนี้" + '. $ JSvarName.'); '
?>
ขั้นตอนที่ 2
วิธีที่ง่ายที่สุดในการส่งชื่อและค่าของตัวแปรในทิศทางตรงกันข้าม (จากสคริปต์ JS ในเบราว์เซอร์ของลูกค้าไปยังสคริปต์ PHP บนเว็บเซิร์ฟเวอร์) สามารถมีลักษณะเช่นนี้ในโค้ด HTML ของหน้า:
var now = วันที่ใหม่ ();
var varName = 'clientTime';
var varValue = now.getHours () + ":" + now.getMinutes ();
window.location.href = 'https://sa/test2.php?' + varName + '=' varValue;
สคริปต์นี้จะส่งไปยังสคริปต์ test2.php ชื่อของตัวแปร "clientTime" และค่าของมันที่มีเวลาคอมพิวเตอร์ปัจจุบันในรูปแบบเดียวกัน HOUR: MINUTE วิธีการถ่ายโอนข้อมูลนี้เรียกว่า "ซิงโครนัส" ซึ่งจะส่งผลให้มีการโหลดหน้าซ้ำทันที แม่นยำยิ่งขึ้น แทนที่จะเป็นหน้าปัจจุบัน ผลลัพธ์ของสคริปต์ test2.php จะถูกโหลดลงในเบราว์เซอร์ รหัสสำหรับสคริปต์ php นี้อาจมีลักษณะดังนี้:
<?php
if ($ _ GET) echo 'Received variable'.key ($ _ GET) '=' $ _ GET [คีย์ ($ _ GET)];
?>
คุณสามารถรวมโค้ดทั้งสามส่วนที่พิจารณาแล้วเพื่อส่งผ่านตัวแปรจากเซิร์ฟเวอร์ไปยังเบราว์เซอร์และกลับเป็นไฟล์ php ไฟล์เดียวดังนี้:
<?php
if ($ _ GET) echo 'Received variable'.key ($ _ GET) '=' $ _ GET [คีย์ ($ _ GET)];
$ JSvarName = 'เวลาเซิร์ฟเวอร์';
$ JSvarValue = วันที่ ('H: i');
$ JScode = $ JSvarName. '= "'. $ JSvarValue. '";';
พิมพ์ ''. $ JScode.'alert ("และบนเซิร์ฟเวอร์เดี๋ยวนี้" + '. $ JSvarName.'); '
?>
ฟังก์ชัน sendData () {
var now = วันที่ใหม่ ();
var varName = 'clientTime';
var varValue = now.getHours () + ":" + now.getMinutes ();
window.location.href = "https://sa/test2.php?" + varName + "=" + varValue;
คืนค่าเท็จ;
}
ส่งข้อมูลไปยังเซิร์ฟเวอร์ ในสคริปต์รวม (PHP + JavaScript) นี้ โค้ด php จะสร้างโค้ด JavaScript โดยการ "ส่งผ่าน" ตัวแปรชื่อ "serverTime" ด้วยค่าที่มีเวลาปัจจุบันของเซิร์ฟเวอร์ เมื่อโหลดหน้าเว็บลงในเบราว์เซอร์แล้ว สคริปต์ JavaScript จะแสดงข้อความพร้อมกับเวลานี้ จากนั้นผู้ใช้คลิกที่ลิงค์ "ส่งข้อมูลไปยังเซิร์ฟเวอร์" จะเป็นการเปิดฟังก์ชัน sendData () ซึ่งจะส่งคำขอ GET ไปยังเซิร์ฟเวอร์โดยส่งชื่อตัวแปร ("clientTime") และค่า (เวลาไคลเอนต์) ไปยัง php สคริปต์ สคริปต์ php เมื่ออ่านชื่อและค่าของตัวแปรจากอาร์เรย์ superglobal $ _GET แล้ว จะพิมพ์ออกมาและเริ่มสคริปต์ที่อธิบายไว้ทั้งหมดอีกครั้ง
ขั้นตอนที่ 3
ทุกอย่างที่อธิบายไว้ข้างต้นใช้สถานการณ์การถ่ายโอนข้อมูลแบบ "ซิงโครนัส" การใช้เมธอด "อะซิงโครนัส" ในการแลกเปลี่ยนข้อมูลระหว่างสคริปต์ไคลเอ็นต์และเซิร์ฟเวอร์มีชื่อเป็นของตัวเอง AJAX (Asynchronous Javascript และ XML) หัวข้อนี้สมควรได้รับบทความแยกต่างหาก