2010-05-19 90 views
4

我的代碼 -如何將PHP代碼片段在JavaScript

<?php 
session_start(); 
$_SESSION['errors']="failed"; 
?> 


<head> 

    function myfunc() 
    {   
     alert(<?php echo $_SESSION['errors']; ?>); 
    } 
</head> 

<body onload="myfunc();"> 

但警報味精沒有彈出。

回答

7

兩個錯誤在你的代碼:

  • 你缺少<script>標籤
  • 您在警報
缺少的單/雙引號3210

試試這個:

<?php 
session_start(); 
$_SESSION['errors']="failed"; 
?> 


<head> 

<script> 
    function myfunc() 
    {   
     alert('<?php echo $_SESSION["errors"]; ?>'); 
    } 
</script> 
</head> 

你可能想要把myfunc()window.load事件或一些click事件進行測試。此外,正如ThiefMaster正確建議的那樣,您可能需要使用中的$_SESSION["errors"]addslashes函數。

注意:假定您的代碼的文件擴展名是php

+0

如果對支持它的一個PHP版本,我會建議使用'json_encode'正常報價和從PHP中跳出字符串。 'addslashes'大部分時間都能完成這項工作,但是誰知道該字符串中的東西是什麼?可能會有換行符! – Aistina 2010-05-19 08:18:16

+0

@Aistina:同意但是隻有oop知道他是否會期待json格式,從而使用json_decode,但是他的會話數據似乎是純粹的標量字符串。 – Sarfraz 2010-05-19 08:20:28

+0

對字符串使用'json_encode'只會返回格式化爲用於Javascript代碼的字符串。例如:'$ str ='這是一個「示例」。 echo json_encode($ str);'會打印''這是一個\「example \」。「;'。 – Aistina 2010-05-19 08:36:32

2

PHP將只打印出failed,也不會打印出與它一起的字符串分隔符,所以一定要確保你把它們放在:

function myfunc() 
{   
    alert("<?php echo $_SESSION['errors']; ?>"); 
} 
1

另外,你應該確保你的PHP輸出不包含任何破JavaScript字符串:

function myfunc() 
{   
    alert('<?php echo addcslashes($_SESSION['errors'], "'/\\"); ?>'); 
} 

請注意,我也難逃正斜槓,以確保</script>不會結束腳本標籤(有除了逃避正斜槓以防止這種情況外,沒有其他好方法)。

2

事實上,在JavaScript中插入PHP代碼片段是不可能的。因爲這是廢話的JS引擎不明白PHP。
您只能使用生成整個javascript。

所以,要問這樣的問題,你必須提供

  1. 要得到一個確切的JavaScript代碼。
  2. 輸入數據
  3. 和你自己的代碼執行的結果,相對於一個例子[1]
+0

嚴厲但準確的陳述。 – 2010-05-19 09:34:33