我的代碼 -如何將PHP代碼片段在JavaScript
<?php
session_start();
$_SESSION['errors']="failed";
?>
<head>
function myfunc()
{
alert(<?php echo $_SESSION['errors']; ?>);
}
</head>
<body onload="myfunc();">
但警報味精沒有彈出。
我的代碼 -如何將PHP代碼片段在JavaScript
<?php
session_start();
$_SESSION['errors']="failed";
?>
<head>
function myfunc()
{
alert(<?php echo $_SESSION['errors']; ?>);
}
</head>
<body onload="myfunc();">
但警報味精沒有彈出。
兩個錯誤在你的代碼:
<script>
標籤試試這個:
<?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。
PHP將只打印出failed
,也不會打印出與它一起的字符串分隔符,所以一定要確保你把它們放在:
function myfunc()
{
alert("<?php echo $_SESSION['errors']; ?>");
}
另外,你應該確保你的PHP輸出不包含任何破JavaScript字符串:
function myfunc()
{
alert('<?php echo addcslashes($_SESSION['errors'], "'/\\"); ?>');
}
請注意,我也難逃正斜槓,以確保</script>
不會結束腳本標籤(有除了逃避正斜槓以防止這種情況外,沒有其他好方法)。
事實上,在JavaScript中插入PHP代碼片段是不可能的。因爲這是廢話的JS引擎不明白PHP。
您只能使用生成整個javascript。
所以,要問這樣的問題,你必須提供
嚴厲但準確的陳述。 – 2010-05-19 09:34:33
如果對支持它的一個PHP版本,我會建議使用'json_encode'正常報價和從PHP中跳出字符串。 'addslashes'大部分時間都能完成這項工作,但是誰知道該字符串中的東西是什麼?可能會有換行符! – Aistina 2010-05-19 08:18:16
@Aistina:同意但是隻有oop知道他是否會期待json格式,從而使用json_decode,但是他的會話數據似乎是純粹的標量字符串。 – Sarfraz 2010-05-19 08:20:28
對字符串使用'json_encode'只會返回格式化爲用於Javascript代碼的字符串。例如:'$ str ='這是一個「示例」。 echo json_encode($ str);'會打印''這是一個\「example \」。「;'。 – Aistina 2010-05-19 08:36:32