亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

客戶端和服務器端編程有什么區別?

客戶端和服務器端編程有什么區別?

郎朗坤 2019-05-20 15:41:44
我有這個代碼:<script type="text/javascript">     var foo = 'bar';     <?php         file_put_contents('foo.txt', ' + foo + ');     ?>     var baz = <?php echo 42; ?>;     alert(baz);</script>為什么這不會在我的文本文件中寫入“bar”,但警告“42”?注意:此問題的早期修訂明確是關于服務器上的PHP和客戶端上的JavaScript。問題和解決方案的本質是相同的任何對當一個客戶端上運行的語言和其他服務器上。當你看到有關特定語言的答案時,請考慮到這一點。
查看完整描述

4 回答

?
飲歌長嘯

TA貢獻1951條經驗 獲得超3個贊

您的代碼分為兩個完全獨立的部分,即服務器端和客戶端。


                    |

               ---------->

              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呼叫并沒有導致任何東西,它只是寫了“+富+”到文件中。該<?php echo 42; ?>調用導致輸出“42”,現在該代碼曾經是該代碼的位置。


生成的HTML / JavaScript代碼現在發送到客戶端,在那里進行評估。該alert呼叫工作,而foo變量沒有任何地方使用。


在客戶端甚至開始執行任何JavaScript之前,所有PHP代碼都在服務器上執行。JavaScript可以與之交互的響應中沒有任何PHP代碼。


要調用某些PHP代碼,客戶端必須向服務器發送新的HTTP請求。這可以通過三種可能的方法之一發生:


一個鏈接,導致瀏覽器加載新頁面。

表單提交,將數據提交到服務器并加載新頁面。

一個AJAX請求,它是一種Javascript技術,可以向服務器發出常規HTTP請求(如1.和2.將),但不會離開當前頁面。

這是一個更詳細地概述這些方法的問題

您還可以使用JavaScript使瀏覽器使用window.location或提交表單打開新頁面,模擬可能性1.和2。


查看完整回答
反對 回復 2019-05-20
?
素胚勾勒不出你

TA貢獻1827條經驗 獲得超9個贊

您的Javascript將在客戶端上執行,而不是在服務器上執行。這意味著foo不在服務器端進行評估,因此無法將其值寫入服務器上的文件。

考慮此過程的最佳方式就是您動態生成文本文件。您生成的文本只有在瀏覽器解釋后才會成為可執行代碼。只<?php在服務器上評估您在標簽之間放置的內容。

順便說一句,養成在HTML或Javascript中嵌入隨機PHP邏輯片段的習慣會導致嚴重錯綜復雜的代碼。我說的是痛苦的經歷。


查看完整回答
反對 回復 2019-05-20
  • 4 回答
  • 0 關注
  • 2315 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號