2014-12-24 107 views
0

我從網上這段代碼,它工作正常解釋JavaScript和PHP代碼

<script type="text/javascript"> 
var jvalue = 'this is javascript value'; 
<?php $abc = "<script>document.write(jvalue)</script>"?> 
</script> 
<?php echo $abc;?> 

但是當我把</script>它停止工作結束,請解釋爲什麼它停止工作?

<script type="text/javascript"> 
var jvalue = 'this is javascript value'; 
<?php $abc = "<script>document.write(jvalue)</script>"?> 
<?php echo $abc;?> 
</script> 
+1

你不能把一個'script'標籤中'script'標籤 –

+2

這個'$ ABC = 「」'更改爲'ABC $ = 「文件撰寫(jvalue)」'它應該工作 –

+0

使用「... <\/script>」來防止th e在JS – dandavis

回答

2

因爲abc<script>document.write(jvalue)</script>,你不能嵌套的標籤<script>。作爲你的第二個例子。你可以做,

<script type="text/javascript"> 
    var jvalue = 'this is javascript value'; 
    <?php $abc = "document.write(jvalue)"?> 
    <?php echo $abc;?> 
</script> 

你也可以做,

<?php $abc = "document.write(jvalue)"?> 
<script type="text/javascript"> 
    var jvalue = 'this is javascript value'; 
    <?php echo $abc;?> 
</script> 

我認爲更多的是與原來的例子是一致的。

1

語法不正確。根據W3 ​​HTML規範,腳本標籤不能位於另一個腳本標籤內。爲了將來的調試目的,請嘗試通過驗證檢查(validator.w3.org)來放置整個輸出字符串。這會告訴您編碼錯誤,並幫助您瞭解可以採取行動的錯誤。

+0

這個答案沒有任何問題,我添加了upvote來平衡downvote。 –

1

你得到的代碼會產生HTML這樣

<script type="text/javascript"> 
var jvalue = 'this is javascript value'; 

</script> 
<script> 
    document.write(jvalue) 
</script> 

但你改變了代碼會產生這樣的

<script type="text/javascript"> 
var jvalue = 'this is javascript value'; 
    <script> 
    document.write(jvalue) 
    </script> 
</script> 

你不能寫一個腳本標籤中的腳本。這就是爲什麼它產生錯誤

1

當PHP回聲您的變量$abc,結果大約是:

<script type="text/javascript"> 
    var jvalue = 'this is javascript value'; 
    <script>document.write(jvalue)</script> 
</script> 

這是無效的,因爲你不能把另一個腳本標籤(又名「鳥巢」)內的腳本標記。

$abc中刪除<script>標籤應該修復它。

下面將工作:

<script type="text/javascript"> 
    var jvalue = 'this is javascript value'; 
    <?php $abc = "document.write(jvalue)" ?> 
    <?php echo $abc; ?> 
</script> 

我不是一個PHP的專家,但我希望的是,如果不是在你的代碼的其他地方需要$ ABC,這兩個PHP線可以被替換爲:

<?php echo "document.write(jvalue)"; ?>