2017-10-18 133 views
2

由於某種原因,使用下面的代碼將一個php變量傳遞給javascript時。PHP變量爲Javascript輸出php代碼

JS:

var myVar = "<?php echo $pass ?>"; 
document.getElementById("output").innerHTML = myVar; 
console.log(myVar); 

而且PHP:

<?php 
$myfile = fopen("testfile.txt", "r"); 
$pass = fread($myfile,filesize("testfile.txt")); 
fclose($myfile); 
?> 

,而不是在文件中輸出的文本,但 「這是一些文本」,它輸出的原始PHP代碼,而不是執行的那樣:「

當在檢查p元素看,它是這樣的:

<p id="output"><!--?php echo $pass;?--></p> 
+0

它輸出什麼原始的PHP代碼?哪部分沒有被解釋? – Wndrr

+0

你可以嘗試把JavaScript排除在等式之外嗎?這聽起來像你的PHP不一定執行。如果你有一個像「

」這樣的div呢?如果它實際輸出「」,那麼你的PHP沒有被處理,這將是問題。 – WOUNDEDStevenJones

+2

確保您的帶有js代碼的文件具有類似'.phtml'或'.php'的文件擴展名 – mega6382

回答

3

您無法將PHP代碼放入客戶端計算機上運行的JavaScript文件中。 PHP在服務器端解釋,並且一般來說只在.php文件中解釋。

0

如果你想輸出的變量,你可以做的文件,

<?php 
$myfile = fopen("testfile.txt", "r"); 
$pass = fread($myfile,filesize("testfile.txt")); 
fclose($myfile); 
$string = "var myVar = ".$pass."; 
document.getElementById('output').innerHTML = myVar; 
console.log(myVar);" 

,然後寫$string到JavaScript文件。

1

以下是我manged有代碼的成功執行對我的本地框:

js_php.php內容:

<html> 
<head><title></title></head> 

<body> 
<div id="output"></div> 

<?php 
$myfile = fopen("./text_file.txt", "r"); 
$pass = fread($myfile,filesize("text_file.txt")); 
fclose($myfile); 
?> 

<script> 
var myVar = "<?php echo $pass ?>"; 
document.getElementById("output").innerHTML = myVar; 
console.log(myVar); 
</script> 

</body> 
</html> 

text_file.txt內容:

Just another textfile :) 

js_php.php的結果HTML代碼:

<html> 
<head><title></title></head> 

<body> 
<div id="output"></div> 


<script> 
var myVar = "Just another textfile :)"; 
document.getElementById("output").innerHTML = myVar; 
console.log(myVar); 
</script> 

</body> 
</html> 

即使代碼正常工作,也有更簡潔更快速的將數據從PHP傳遞到JavaScript的方法。在OP可能已經通過數據作爲查詢字符串的一部分,具體如下:

修訂js_php.php

<?php 
$myfile = fopen("./text_file.txt", "r"); 
$pass = fread($myfile,filesize("text_file.txt")); 
fclose($myfile); 
header("location: js_php.html?" . urlencode("qs=$pass")); 
exit; 

js_php.html:

<html> 
<head><title></title></head> 

<body> 
<div id="output"></div> 
<script> 
var qs = location.search; 
var data = decodeURIComponent(qs); 
var split = data.split("=")[1]; 
split = split.replace(/\+/g," "); 

document.getElementById("output").innerHTML = split; 
console.log(data); 
</script> 

</body> 
</html> 

注:由於PHP和JavaScript做不以相同的方式對空格字符進行編碼,解碼後的JavaScript將具有需要用空格字符替換的「+」字符。爲此,正則表達式將全局替換數據中的所有數據。

0

歡迎來到一個全新的樂趣世界。正如所有的答案都指出,PHP發生在服務器端和客戶端的JavaScript。在計算機上打開頁面時,會在服務器上生成很多html,然後在自己的計算機上發生一些事情(您的瀏覽器會解釋該CSS並運行JavaScript)。這分別是服務器端和客戶端。

您可以使用php來生成JavaScript,這是slevy1如此有用的演示。這可以創造奇蹟,但是當你混合上述兩個方面時(如果你想從服務器重新加載文本呢?),事情會變得棘手。

另一種途徑是讓javascript向服務器發送一條消息請求信息,然後採取相應的行動。我正在談論AJAX。這裏是W3教程,說明如何設置了:

https://www.w3schools.com/xml/ajax_intro.asp

它,如果你使用jQuery變得更加容易:

http://api.jquery.com/jquery.ajax/

無論哪種方式,它並不像直觀簡單地堅持一些PHP進入你的JavaScript文件,除非你在php中生成javascript。項目祝你好運!