Вызов функции Javascript из функции PHP - PullRequest
0 голосов
/ 07 апреля 2011

Ниже приведен мой код в одном файле PHP с именем 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);
         }
     }
?>

Чтобы помочь в понимании, я вызываю метод javascript testAlert() из функции PHP testPassedValues().Тем не менее, я не уверен, в чем проблема, поскольку вызов не был успешным.В Mozilla (Firebug) я не нахожу никаких проблем, а в Chrome-> Developer Tools я получаю ошибку Uncaught Syntaxerror: Unexpected token ILLEGAL в консоли.

Может кто-нибудь, пожалуйста, помогите мне с первопричиной здесь?

Ответы [ 2 ]

4 голосов
/ 07 апреля 2011

Не думаю, что вы полностью поняли, где и как выполняются JavaScript и PHP.

PHP запускается на сервере.Он генерирует HTML-страницу (потенциально содержащую JavaScript), которая затем отправляется клиенту.PHP завершен.

Затем веб-браузер клиента запускает JavaScript.

Чтобы отладить проблему JavaScript, взгляните на веб-страницу, которую клиент фактически видел.Если Firebug сообщает о проблеме, вот где она.

2 голосов
/ 07 апреля 2011

Скорее всего, значения $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>";

Вы также должны корректно экранировать значения $One[2] и $Two[2] для HTML и JavaScript, чтобы не допускать ошибок или ошибок XSS, когда строка содержит апостраф.Я оставлю это на ваше усмотрение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...