Cách Chuyển Một Biến

Mục lục:

Cách Chuyển Một Biến
Cách Chuyển Một Biến

Video: Cách Chuyển Một Biến

Video: Cách Chuyển Một Biến
Video: Excel 71 - Cách sử dụng Data Table một biến 2024, Có thể
Anonim

Để tổ chức giao tiếp tương tác giữa khách truy cập và trang web (hay đúng hơn là trình duyệt với máy chủ web), lập trình viên cần đưa ra các kịch bản cho việc trao đổi dữ liệu giữa họ. Chúng ta hãy xem xét một số tùy chọn đơn giản để tổ chức chuyển các biến từ tập lệnh JavaScrip của máy khách sang tập lệnh PHP của máy chủ và ngược lại.

Truyền dữ liệu từ PHP sang JavaScript và ngược lại
Truyền dữ liệu từ PHP sang JavaScript và ngược lại

Nó là cần thiết

Kiến thức cơ bản về ngôn ngữ PHP, JavaScript và HTML

Hướng dẫn

Bước 1

Ở giai đoạn hình thành trang, không khó để chuyển một biến cùng với giá trị của nó từ tập lệnh php sang tập lệnh JavaScript. Bản thân tập lệnh PHP tạo ra mã HTML của trang được yêu cầu, bao gồm các tập lệnh mà nó chứa. Điều này có nghĩa là anh ta có thể viết bất kỳ biến nào vào mã JavaScript cần được chuyển cùng với các giá trị của chúng. Ví dụ: tập lệnh php này sẽ chuyển cho tập lệnh máy khách một biến có tên "serverTime" chứa thời gian máy chủ hiện tại ở định dạng HOUR: MINUTE:

<? php

$ JSvarName = 'serverTime';

$ JSvarValue = date ('H: i');

$ JScode = $ JSvarName. '= "'. $ JSvarValue. '";';

print ''. $ JScode.'alert ("Và trên máy chủ bây giờ" + '. $ JSvarName.'); '

?>

Chuyển một biến và giá trị của nó từ PHP sang Javascript
Chuyển một biến và giá trị của nó từ PHP sang Javascript

Bước 2

Cách đơn giản nhất để chuyển tên và giá trị của các biến theo hướng ngược lại (từ tập lệnh JS trong trình duyệt của khách hàng sang tập lệnh PHP trên máy chủ web) có thể giống như thế này trong mã HTML của trang:

var now = new date ();

var varName = 'clientTime';

var varValue = now.getHours () + ":" + now.getMinutes ();

window.location.href = 'https://sa/test2.php?' + varName + '=' varValue;

Tập lệnh này sẽ gửi đến tập lệnh test2.php tên của biến "clientTime" và giá trị của nó chứa thời gian hiện tại của máy tính ở cùng định dạng HOUR: MINUTE. Phương pháp truyền dữ liệu này được gọi là "đồng bộ" - nó sẽ dẫn đến việc tải lại trang ngay lập tức. Chính xác hơn, thay vì trang hiện tại, kết quả của tập lệnh test2.php sẽ được tải vào trình duyệt. Mã cho tập lệnh php này có thể giống như sau:

<? php

if ($ _ GET) echo 'Biến đã nhận'.key ($ _ GET). '='. $ _ GET [key ($ _ GET)];

?>

Bạn có thể kết hợp tất cả ba phần được xem xét của mã để chuyển các biến từ máy chủ đến trình duyệt và quay lại một tệp php như sau:

<? php

if ($ _ GET) echo 'Biến đã nhận'.key ($ _ GET). '='. $ _ GET [key ($ _ GET)];

$ JSvarName = 'serverTime';

$ JSvarValue = date ('H: i');

$ JScode = $ JSvarName. '= "'. $ JSvarValue. '";';

print ''. $ JScode.'alert ("Và trên máy chủ bây giờ" + '. $ JSvarName.'); '

?>

function sendData () {

var now = new date ();

var varName = 'clientTime';

var varValue = now.getHours () + ":" + now.getMinutes ();

window.location.href = "https://sa/test2.php?" + varName + "=" + varValue;

trả về sai;

}

Gửi dữ liệu đến máy chủ Trong tập lệnh kết hợp (PHP + JavaScript) này, mã php sẽ tạo ra mã JavaScript bằng cách "truyền" một biến có tên "serverTime" với giá trị chứa thời gian máy chủ hiện tại. Khi trang được tải vào trình duyệt, đoạn mã JavaScript sẽ hiển thị thông báo với thời gian này. Sau đó, người dùng nhấp vào liên kết "Gửi dữ liệu đến máy chủ" sẽ khởi chạy hàm sendData (), hàm này sẽ gửi một yêu cầu GET đến máy chủ, chuyển tên biến ("clientTime") và giá trị của nó (thời gian khách) tới php kịch bản. Một tập lệnh php, sau khi đọc tên và giá trị của một biến từ mảng siêu toàn cầu $ _GET, sẽ in nó và bắt đầu lại toàn bộ tập lệnh được mô tả.

Trao đổi các biến và giá trị của chúng giữa PHP và JavaScript
Trao đổi các biến và giá trị của chúng giữa PHP và JavaScript

Bước 3

Mọi thứ được mô tả ở trên thực hiện kịch bản truyền dữ liệu "đồng bộ". Việc thực hiện phương pháp "không đồng bộ" trao đổi dữ liệu giữa các tập lệnh máy khách và máy chủ có tên riêng là AJAX (Asynchronous Javascript and XML). Chủ đề này xứng đáng có một bài báo riêng.

Đề xuất: