如何将php变量传递给javascript函数

时间:2012-06-09 00:06:58

标签: php javascript html

  

可能重复:
  How to pass a PHP variable to Javascript?

我需要以某种方式使这个函数接受参数。

的index.html

function dataOut(name2) {
    var names = name2.value;
    document.getElementById("output2").innerHTML = names;
    //even document.getElementById("output2").innerHTML= "blablabla"; 
    //just to show that it works
}

该函数将从:

调用

dbase.php

...
echo "<td><a href='javascript:dataOut(this.value)'>" . $row['FirstName'] . "</a></td>";
...

我在显示表格时没有问题。该链接确实显示其各自的“$ row ['FirstName']”,它们是来自数据库的字符串。我试着使用非参数函数:

function dataOut(){}
echo "<td><a href='javascript:dataOut()'>" . $row['FirstName'] . "</a></td>";

这些工作正常。

如果我尝试传递参数,该函数将不会执行任何操作;即使我只是想在函数的注释部分中打印随机字符串。如果我将鼠标悬停在该表中创建的链接上,我会看到:

javascript:dataOut(firstname)
//where first name is the value of the $row['FirstName']

我尝试过的替代方案:

echo "<td><a href='javascript:dataOut(this.value)'>" . $row['FirstName'] . "</a></td>";
echo "<td><a href='javascript:dataOut($row['FirstName'])'>" . $row['FirstName'] . "</a></td>";
echo "<td><a href='javascript:dataOut('" . $row['FirstName'] .'")'>" . $row['FirstName'] . "</a></td>"; //this give me undefined variable error
echo "<td><a href='javascript:dataOut(". $row['FirstName']. ")'>" . $row['FirstName'] . "</a></td>"; // this no error

任何帮助将不胜感激。更多的我也尝试<a onclick=dataOut ....>也不起作用。

1 个答案:

答案 0 :(得分:2)

您不应该尝试通过连接引号和纯字符串来创建JavaScript字符串。使用json_encode()代替保证输出有效的JavaScript表达式:

echo "<td><a href='javascript:dataOut(".json_encode($row['FirstName']).")'>" . $row['FirstName'] . "</a></td>";

另一方面,使用javascript:网址通常是一个坏主意。如果没有适用于没有JavaScript的人的正确网址,请更好地使用onclick="dataOut(...); return false;"并使用有用的 href值或#。当然,最好是正确注册事件而不是使用内联事件,并将数据存储在data-属性中,但这将更偏离主题。