2010-07-10 103 views
0

好吧,我現在正在做的只是迴應腳本標記。例如:如何從PHP函數執行Javascript代碼?

echo '<script>alert("Hello world")</script>'; 

這是正確的方法嗎?或者,還有更好的方法?

+0

請你最後審查的答案,這和你以前的問題,並接受最有幫助的人或編輯您的問題指出爲什麼沒有答案能解決你的問題。我們花了我們的時間來幫助你,現在請花些時間來表達一些讚賞。謝謝。 – Gordon 2010-11-01 16:39:59

回答

10

您無法從PHP執行JavaScript。除非您使用的是Server-side JavaScript,否則所有JavaScript都只在客戶端執行 - 在瀏覽器中執行。這意味着您的PHP代碼只有的JS代碼寫入瀏覽器稍後將顯示的頁面上。這個頁面是從你的網絡服務器提供給請求瀏覽器的,那麼JS代碼是然後執行。對於PHP,你所迴應的JS沒有任何意義。這只是一個像所有其他的字符串。

除此之外,是的。這是你如何做到的。

1

對於執行一個函數我不這麼認爲。但是,如果處理更復雜的對象和序列化,則可以嘗試json_encode而不是手動打印所有對象/陣列。

2

正如Gordon所說,你不能從執行 js。只有您可以生成 js代碼以及HTML並將其發送到將要執行的瀏覽器。

爲更好的方法,你可以從PHP逃脫,寫純DHTML的是:

function jsalert() { 
?> 
<script>alert("Hello world")</script> 
<? 
} 

它被認爲是明顯的原因更好。

還考慮將您的應用程序分爲兩部分:業務邏輯和表示邏輯。 (D)HTML應該只出現在後者中。一個最簡單但功能強大且廣泛使用的表示邏輯部分的例子就像只包含在業務邏輯文件中的php文件一樣簡單。
說,這裏有雲業務邏輯

<? 
$str = "Hello world!"; 
include "js-tpl-example.php"; 
?> 

和模板:

<html> 
<title></title> 
<body> 
<script>alert("<?=$str?>")</script>'; 
</body> 
</html>