2013-01-31 25 views
-5

可能重複:
Parse a JavaScript file through PHP
PHP no longer working inside javascriptJavaScript並不是解析PHP

我運行.PHP在我的本地和昨天他們的工作,今天他們有錯誤的文件,但我沒有改變代碼。這裏是具有相同的錯誤我再實際代碼測試文件:

<html> 
    <script type="text/javascript"> 
    <? $message = "Hello"; ?> 
    </script> 
    <? echo $message; ?> 
</html> 

我知道這是寫你好愚蠢的方式,但它表明,當我嘗試使用內部JavaScript的PHP的我得到了什麼錯誤。昨天工作非常好,沒有任何代碼發生變化。當我運行它時,它會在第3行顯示「意外的令牌<」。我認爲這是apache/php/mysql的問題,但是我正在嘗試修復它。任何建議都會很棒。謝謝。

+4

可能您的網絡服務器不支持PHP短標籤。您是否嘗試過使用'<?php'代替? – Zeta

+0

這不是JavaScript解析PHP的工作。它應該解釋(並刪除)服務器端。 –

+0

我知道他們會在哪裏downvote。這個論壇上的每個人都需要畢業或以上才能提出問題,否則你會陷入地獄。 – Toping

回答

1

我想你的短標籤是禁用的。您需要啓用PHP短標籤才能使其工作。檢查,如果這個工程:

<html> 
    <script type="text/javascript"> 
    <?php $message = "Hello"; ?> 
    </script> 
    <?php echo $message; ?> 
</html> 

,在我看來,我不知道,爲什麼你打開一個<script>標籤和聲明PHP服務器端的語句存在。你知道嗎?它不輸出任何東西。不管怎麼說,上面的代碼的輸出會是這樣:

<html> 
    <script type="text/javascript"> 

    </script> 
    Hello 
</html> 

所以沒有必要具有<script>標籤,因爲它是客戶端和PHP並不關心這個的。您可以將它放在任何地方,只要它們在<?php ?>標籤內,它們就不會被瀏覽器解析。 :)


如果你這樣做是在你自己的系統,使短標籤PHP,請執行下列操作:

  1. 找到php.ini文件。
  2. 找到這個:

    short_open_tag = Off 
    
  3. 將其更改爲:

    short_open_tag = On 
    

從手冊:

short_open_tag:告訴PHP是否應該允許PHP的開放標籤的簡寫形式(<? ?>)。如果您想將PHP與XML結合使用,則可以禁用此選項,以便內嵌使用<?xml ?>。否則,您可以使用PHP打印它,例如:<?php echo '<?xml version="1.0"?>'; ?>。另外,如果禁用,則必須使用PHP開放標記(<?php ?>)的長格式。

+4

那麼,downvote的原因將是真棒! –

+0

你選擇了一個script標籤來聲明一個php變量。然後在外面迴應它。有沒有必要的腳本標記 – VeXii

+1

@VeXii我知道這是愚蠢的。列梅增加了答案。但這是OP的代碼。你沒看見嗎? –

0

它無效的javascript。

php運行後,你最終會看到一個dom看起來像<script type="text/javascript"></script>,因爲你沒有寫任何東西。

嘗試:

<script> 
var hello = "<?php echo 'hello' ?>" 
</script> 
<script type="text/javascript"> 
document.writeln(hello) 
</script> 
+1

您忘了在'hello'之後添加';' 。這是一個解析錯誤 –

+0

你不需要在javascript中使用simicolons來聲明一個變量。 – VeXii

+0

但你在PHP中做。 ;) – rlemon

-1

,因爲它是該腳本工作正常,我。您的問題中發佈的代碼是否完整? 只有這樣,我能夠重現問題是用下面的代碼:

<?php 
<html> 
    <script type="text/javascript"> 
    <? $message = "Hello"; ?> 
    </script> 
    <? echo $message; ?> 
</html> 
?> 

糾正我,如果我錯了,但我假設你發佈的代碼是在*。PHP文件,並在之間的PHP標籤..如果是這樣的話,刪除所述標籤,它應該工作。

+0

不確定爲什麼這是downvoted ..我們不應該考慮所有可能的問題來源? – phex

+1

夥計,我沒有downvote。但是,只要明白髮生了什麼,雖然你的回答沒有幫助!事實上,坦率地說,你的回答進一步扼殺了代碼。你有'short_open_tag'啓用和OP不。詳細瞭解它,你就會知道你爲什麼被低估了。 –

+0

@PraveenKumar不用擔心,我真的沒有抱怨;-)我只是儘管_if OP實際上已經啓用了'short_open_tag',這可能是一個解決方案。 – phex