2014-10-03 121 views
3

裏面一個PHP腳本我有這樣的:我可以在PHP內部的JavaScript中編寫PHP嗎?

echo <<<EOD 

<script type="text/javascript"> 
document.getElementById('my_element_id').innerHTML='Do stuff'; 
</script> 

EOD; 

我可以添加JavaScript的PHP內?用PHP代碼替換「Do stuff」部分?如果是的話,我該怎麼做?從PHP

<?php 
$anyphpvariable='foo'; 
echo <<<EOD 
    <script type="text/javascript"> 
     document.getElementById('my_element_id').innerHTML=$anyphpvariable; 

    </script> 
EOD; 
?> 

的東西都可以分配給JS和良好做法:

+1

http://php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc – Clive 2014-10-03 12:39:32

+2

爲什麼你不試試? – mpgn 2014-10-03 12:39:36

+1

是的,你可以做到這一點...並且在提問之前試着實現這個目標.. :) – DeDevelopers 2014-10-03 12:40:31

回答

3

首先,應該指出的是,這與javascript無關。你可以有任何形式的文本。你真正的問題是如何在heredoc中使用變量。

Heredoc定義爲以下幾點:

Nowdocs是單引號字符串什麼here文檔是雙引號字符串。 nowdoc與heredoc類似,但在nowdoc內部沒有解析。該構造非常適合嵌入PHP代碼或其他大型文本塊,而無需轉義。

意思是說,因爲這個工程:

$name = 'Foo'; 

echo "My name is $name"; // Using double quotes so variables get expanded 

那麼這也可以工作:

$name = 'Foo'; 

echo <<<EOD 
    My name is <strong>$name</strong> 
EOD; // Using heredoc so variables get expanded 

本質上意味着是的,只要你把你的'Do stuff'內容到一個變量第一。請注意,如果您使用更高級的變量/數組,在粘貼到JS代碼之前先執行$array = json_encode($array)是個好主意(想象一下,如果$nameThe Boss's Wife-那麼如果您不編碼它,則撇號會毀掉您的JS)。

DEMO

0

可以像做。 但不是JS可以分配任何東西給PHP。

+0

這會引發Reference錯誤,因爲'foo'沒有被定義爲JavaScript變量。 – Quentin 2014-10-03 13:24:28

+0

環繞$ anyphpvariable,引用如... erHTML ='$ anyphpvariable'; – Fahad 2014-10-03 13:49:14

+0

提供'$ anyphpvariable'不包含新行或'''字符(在這個例子中它沒有,但這不是一個可靠的解決方案)。 @ h2ooooooo的答案涵蓋了這一點,並且好得多。 – Quentin 2014-10-03 13:50:58

-2

是的,但我只能得到你想要的東西,如果我有關的HTML代碼之後放置。您可以呼應腳本...例如,這將工作:

<div id="footer">Hey</div> 
<?php 
$myVar = 'Hello'; 
echo "<SCRIPT> 
    document.getElementById('footer').innerHTML = '$myVar'; 
</SCRIPT>"; 
?> // You will see Hello in the footer 

,但是這是行不通的:

<?php 
$myVar = 'Hello'; 
echo "<SCRIPT> 
    document.getElementById('footer').innerHTML = '$myVar'; 
</SCRIPT>"; 
?> 
<div id="footer">Hey</div>// You will see Hey in the footer 

作爲一個側面說明,這些其他功能/方法也可以工作:

$myVar = 'Hi'; 
echo "<SCRIPT> 
    alert('$myVar'); 
</SCRIPT>";//Alerts 'Hi' 

$myVar = 'home.php'; 
echo "<SCRIPT> 
    location = '$myVar'; 
</SCRIPT>";//Takes you to home.php 

$myVar = 'hi'; 
echo "<SCRIPT> 
    myFunction('$myVar'); 
</SCRIPT>";//calls myFunction with argument $myVar 
相關問題