以下是我在一个名为testOne.php
<html>
<head>
<script type="text/javascript">
function testAlert(firstValue, secondValue)
{
alert ("Passed: "+firstValue+secondValue);
}
</script>
</head>
<body>
....
</body>
</html>
<?php
function testPassedValues($One, $Two)
{
echo "<input type = \"button\" onclick = \"testAlert($One[2], $Two[2])\">Click Here!</input>";
}
$link = mysql_connect("localhost", "root", "");
if (mysql_select_db("myDatabase", $link))
{
$result = mysql_query("SELECT * FROM MYTABLE");
while($currRowOne = mysql_fetch_row($result) &&
$currRowTwo = mysql_fetch_row($result))
{
testPassedValues($currRowOne, $currRowTwo);
}
}
?>
为了帮助理解,我从PHP函数testAlert()
调用了一个javascript方法testPassedValues()
。但是,我不确定问题是什么,因为呼叫不成功。在Mozilla(Firebug)中,我没有发现任何问题,在Chrome-&gt;开发人员工具中,我在控制台中收到错误Uncaught Syntaxerror: Unexpected token ILLEGAL
。
有人可以帮助我了解这里的根本原因吗?
答案 0 :(得分:4)
我认为您并不完全了解JavaScript和PHP的执行位置和方式。
PHP在服务器上运行。它会生成一个HTML页面(可能包含JavaScript),然后将其发送到客户端。 PHP现已完成。
客户端的Web浏览器然后运行JavaScript。
要调试JavaScript问题,请查看客户端实际看到的网页。如果Firebug报告了一个问题,那就是它。
答案 1 :(得分:2)
$One[2]
和$Two[2]
的值很可能是字符串,因此生成的HTML为:
<input type = "button" onclick = "testAlert(string one, string two)">Click Here!</input>
这显然是无效的javascript。
将参数括在引号中:
echo "<input type = \"button\" onclick = \"testAlert('$One[2]', '$Two[2]')\">Click Here!</input>";
您还应正确地转义HTML和JavaScript的$One[2]
和$Two[2]
值,以便在字符串包含offtraphe时不会引入XSS漏洞或错误。我会把这个留给你弄清楚。