<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>
输出结果为:
关键是:未定义
我该如何解决这个问题?
答案 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_name
是testname
)。 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>';
不确定是否能解决整个问题,但我很确定你无法在回声中回应新的回声。