从PHP函数调用Javascript函数

时间:2011-04-06 23:08:20

标签: php javascript function

以下是我在一个名为testOne.php

的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

有人可以帮助我了解这里的根本原因吗?

2 个答案:

答案 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漏洞或错误。我会把这个留给你弄清楚。