php為啥返回一段js代碼?

來源:互聯網
上載者:User
不懂php為啥會返回一段js字串?比如:echo '';

回複內容:

不懂php為啥會返回一段js字串?比如:echo '';

php中是不能執行js的,js只能在php解析成html後才能執行。如果想用php輸出js 就要把js代碼當作php的字串來輸出。

這個應該是為了跳轉頁面,沒什麼好奇怪,看具體需求和應用情境了。比如下面的代碼

(php中)js的運行不是在伺服器上面的,應該是在用戶端。

php只是把 ""這個字串返回到前台,並不執行裡面的語句,假如你將該字串顯示在瀏覽器上,則瀏覽器會自動編譯執行該指令碼。

你可以考慮使用file_get_contents($url);

通常在網頁請求中判斷,如果沒有登入跳轉

if(!$login){// 和輸出字串沒區別,只不過會被js執行echo '';}

題主的意思應該是想問,為啥沒跳轉吧?

不太清楚題主的意思,建議去看下提問的藝術...

php可以返回任何代碼,這個沒什麼討論的

以前帶過的一個實習生問過我為什麼PHP不能把異常拋給瀏覽器,現在的一個妹子同事有一次嘗試在php中取一個JS中的變數做判斷,還有題主的這個問題,基本上都是沒弄明白一個請求是怎麼完成的,還有就是程式是這麼執行的。

我試著解釋一下:在服務端使用PHP開發的時候,經常會將PHP、HTML、JS、CSS這些代碼寫在一起,尤其是將PHP代碼混合在後三者之中(CSS比較少)。但是實際上在執行的時候,這幾個部分是分別獨立執行的。

PHP只能在服務端執行,在請求發出之後,伺服器執行PHP指令碼,對於PHP解譯器來說,它只能看到和執行中間的那部分代碼,在執行這部分代碼之後,會產生請求需要的資料,有時候這些資料是一個json字串,有時候這個東西就是一個包含HTML、JS、CSS這些代碼的頁面。

題主問的PHP產生JS代碼就是這時候產生的,對於PHP解譯器來說,那些JS代碼和普通的字串沒有區別。

在這之後,伺服器從PHP的緩衝區讀出這些資料(比如一個包含了HTML、JS和CSS代碼的頁面),然後將這些資料打包發送給瀏覽器。瀏覽器內嵌了HTML、JS和CSS的解釋程式,所以瀏覽器可以執行HTML、JS和CSS代碼。同樣的,因為瀏覽器沒有PHP解釋程式,所以瀏覽器是不能執行PHP代碼的。題主可以嘗試在本地寫一個靜態頁面,在其中寫一段PHP代碼,然後用瀏覽器開啟觀察一下。

簡單來說,就像是有這麼一堵牆,牆的一邊是瀏覽器,它能執行HTML、JS和CSS;牆的另一邊是伺服器,它能執行PHP;兩者通過HTTP協議互動。對於瀏覽器來說,因為不認識PHP代碼,所以就算給它一段PHP代碼,對它來說也就是一堆普通的字串。同樣的,對於伺服器來說,所謂HTML、JS和CSS代碼跟“Hello,world”沒有任何區別。

不管是JS還是PHP都可以產生任何形式的字串,所以它們可以產生任何語言的代碼。
再說遠一點兒,如果沒有程式去解釋執行,任何代碼都只是一堆字串。

個人的一些看法,歡迎指正。

答案見回答下@清泉月下的回答。

當年asp.net webform年代,就有“服務端註冊指令碼到用戶端”的操作,畢竟那年頭前端還沒有興起。

你這個問題應該拆成兩個問題來問:

  1. 不懂php為啥會返回一段html代碼?

  2. 不懂html為啥為夾了一段js代碼?

大誤~

jsonp, 一種編程方法, 可以跨域.

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.