Sự khác biệt giữa lập trình phía máy khách và phía máy chủ là gì?

  • 2/6/2020 6:31:18 AM bởi admin
  • 0 câu trả lời

Câu hỏi

Đã xem 39k lần

476

Tôi có mã này:


<script type="text/javascript">
    var foo = 'bar';
    <?php
        file_put_contents('foo.txt', ' + foo + ');
    ?>

    var baz = <?php echo 42; ?>;
    alert(baz);
</script>

Tại sao điều này không ghi "thanh" vào tệp văn bản của tôi, nhưng cảnh báo "42"?

Lưu ý: Bản sửa đổi trước đó của câu hỏi này rõ ràng về PHP trên máy chủ và JavaScript trên máy khách. Bản chất cơ bản của vấn đề và giải pháp là giống nhau đối với bất kỳ cặp ngôn ngữ nào khi một ngôn ngữ đang chạy trên máy khách và ngôn ngữ kia trên máy chủ (ngay cả khi chúng là cùng một ngôn ngữ). Vui lòng đưa tài khoản này vào tài khoản khi bạn thấy câu trả lời nói về các ngôn ngữ cụ thể.

1 câu trả lời, 0 Đã được chấp nhận

admin posted 2/6/2020 6:31:50 AM

449

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_contentsgọ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 alertgọi hoạt động, trong khi foobiế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.locationhoặc gửi biểu mẫu, mô phỏng các khả năng 1. và 2.

Có câu trả lời không? Đăng nhập hoặc là Đăng ký để gửi câu trả lời của bạn
câu trả lời của bạn
Hủy bỏ
Chi tiết
  • Đăng 2/6/2020 6:31:18 AM
  • 1 lượt xem, 0 replies