如何将PHP变量传递给Javascript

时间:2011-01-20 01:07:16

标签: php javascript

<html>
<head>
<?php
$your_name=$_POST['name'];
?>
<script language="javascript">
function fash(at1,at2)
{
    alert(at1+at2);
}
</script>
</head>
<body>
<?php
echo $your_name;
echo '<script language="javascript">fash("the key is: "+'<?php echo $your_name; ?>');</script>';
?>
</body>
</html>

输出结果为:

  

关键是:未定义

我该如何解决这个问题?

6 个答案:

答案 0 :(得分:4)

这可能不是正确的代码,它有语法错误(例如,您在另一个<?php块中有一个<?php块。输出脚本标记的行可能看起来像这样:

echo "<script language=\"javascript\">fash(\"the key is: $your_name\");</script>";

或者像这样:

?>
<script language="javascript">fash("the key is: <?php echo $your_name; ?>");</script>
<?php

这将使其输出“关键是:testnameundefined”(如果$your_nametestname)。 undefined来自你定义fash以获取两个参数并连接它们,但你只传递一个; at2未定义

答案 1 :(得分:1)

很难看到所有修改都会发生什么,但是当您已经在<?php ?>标记内时,似乎您正在使用php标记。

只是回显和删除内部<?php ?>应解决部分问题,尽管您的javascript函数似乎也需要2个参数而不是一个(给定的文本)。

答案 2 :(得分:1)

您只将一个参数传递到您的函数中:

fash("the key is: "+'php_value');
在调用函数之前,

"the key is: "和你的php字符串连接在一起。

尝试

fash("the key is: ", 'php_value');

代替。

答案 3 :(得分:0)

函数fash有两个参数。你只传递了一个。

使用:

fash("the key is: ", "$your_name");

这将在连接这两个字符串后正确显示警报。您不需要PHP标记,因为您已经在PHP代码块中。

答案 4 :(得分:0)

因为在fash的定义中,你接受两个参数并在那里连接它们,但是在你的回显脚本中,你将它们连接起来,所以只传递一个参数。所以at2作为未定义传递。显然你的名字也是空白的。

答案 5 :(得分:0)

echo '<script language="javascript">fash("the key is: "+'<?php echo $your_name; ?>');</script>';

看起来你在php回声中回应了php代码。尝试将其更改为:

echo '<script language="javascript">fash("the key is: "+'$your_name;');</script>';

不确定是否能解决整个问题,但我很确定你无法在回声中回应新的回声。