2017-03-03 72 views
-4

我有一個php文件,裏面添加了JS內部的echo。 我想用PHP函數裏面,現在JS範圍,我怎麼能做到這一點:如何在一個php文件中使用php裏面的JS

<?php 
    echo '<script> 
    <?php 
     function message() { 
     echo "You will be redirected"; 
     } 
    ?> 
    setTimeout(<?php message();>?,3000);</script>'; 
?> 
+0

你必須分辨客戶端和服務器代碼及其區別。 –

+0

我投票結束這個問題作爲題外話,因爲這個問題質量很低。 –

+0

你想完成什麼? – 4castle

回答

0

PHP將首先執行,在服務器上,所以你必須給它一個PHP文件代碼,確保服務器通過PHP運行它,然後把它嵌入PHP在JavaScript像這樣:

<script> 
function message(){ 
    alert("<?= $phpMessage ?>"); 
    location.href = "http://www.example.com" /* The URL you would like the user to go to next */; 
} 
setTimeout(message,3000); 
</script> 

假設你想顯示從PHP的消息,您可以在警報語句嵌入它作爲< = $ phpMessage? ?>。這對您的用戶來說會很尷尬。

更優雅的解決方案是使用會話存儲將消息傳遞到下一頁。

在接收數據並需要發送消息的頁面上,第一個PHP命令在發送任何輸出之前應爲session_start()。消息可以與$ _SESSION [「消息」]被保存在一個會話變量,這將是可用於下一個腳本,就像這樣:

one.php(第一頁)

<?php session_start(); $_SESSION['message'] = 'My Message'; 

two.php(第二頁)

<?php session_start(); echo $_SESSION['message']; unset($_SESSION['message']); ?> 

注意,第二個腳本必須使用未設置清除消息。

+0

也許,他可以放入內聯PHP文件或基本上使用PHP呈現文件(並手動設置標題)。 – Areeb

0

不管你做什麼,JavaScript都不能在頁面上下文中執行你的PHP。基於你的例子,我不認爲你會想在PHP中這樣做。

如果你只是想輸出消息重定向用戶之前,單獨的JavaScript是這個職位的合適的工具:

<script> 
    function message() { 
    document.write("You will be redirected"); 
    } 
    setTimeout(message,3000); 
</script> 

我試圖想一個方案,其中它將使意義的像你問的那樣混合PHP和JavaScript,但我不能。

但是,如果你真的堅持...

<?php 
    function message() { 
    return "You will be redirected"; 
    } 

    echo ' 
    <script> 
     setTimeout(() => document.write("' . message() . '"), 3000); 
    </script> 
    '; 
?> 

測試在https://repl.it/GF2E/0

注意,JavaScript的箭頭函數的語法是supported by all current browsers