#php #javascript #function
#php #javascript #функция
Вопрос:
Ниже приведен мой код в одном 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) amp;amp;
$currRowTwo = mysql_fetch_row($result))
{
testPassedValues($currRowOne, $currRowTwo);
}
}
?>
Чтобы помочь в понимании, я вызываю метод javascript testAlert()
из функции PHP testPassedValues()
. Однако я не уверен, в чем проблема, поскольку вызов не выполнен успешно. В Mozilla (Firebug) я не нахожу никаких проблем, а в Chrome-> Инструменты разработчика я получаю сообщение об ошибке Uncaught Syntaxerror: Unexpected token ILLEGAL
в консоли.
Кто-нибудь, пожалуйста, может помочь мне в определении основной причины здесь?
Ответ №1:
Я не думаю, что вы полностью поняли, где и как выполняются JavaScript и PHP.
PHP запускается на сервере. Она генерирует HTML-страницу (потенциально содержащую JavaScript), которая затем отправляется клиенту. Теперь PHP завершен.
Затем веб-браузер клиента запускает JavaScript.
Чтобы отладить вашу проблему с JavaScript, взгляните на веб-страницу, которую действительно видел клиент. Если Firebug сообщает о проблеме, значит, она там и есть.
Комментарии:
1. Я не понял вас, когда вы сказали «взгляните на веб-страницу, которую на самом деле видел клиент». PHP-код обновляет ту же страницу результатами запроса из базы данных. Нажатие кнопки не вызывает никаких изменений на веб-странице и выдает ошибку, указанную в Google Chrome-> Инструменты разработчика, а не Firebug. Firebug не сообщает ни о какой ошибке.
2. @darkie15: используйте функцию «просмотр исходного кода» в вашем браузере. Вы не увидите там никакого PHP, но с результирующей веб-страницей что-то не так.
Ответ №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>";
Вы также должны корректно экранировать значения of $One[2]
и $Two[2]
для HTML и JavaScript, чтобы не вводить недостатки XSS или ошибки, когда строка содержит апостроф. Я оставляю это на ваше усмотрение, чтобы вы могли разобраться.
Комментарии:
1. Спасибо за предложение, похоже, теперь предыдущая проблема решена. Но я получаю новое сообщение об ошибке
Uncaught ReferenceError: testAlert is not defined
. Есть предложения по этой ошибке?2. Ну, у вас отсутствует закрывающий тег </script> в приведенном выше примере, возможно, это и является причиной проблемы. Ошибка описывает проблему, хотя — функция testAlert не существовала, когда была нажата кнопка.
3. Что ж, это была моя ошибка. Я ввел приведенный выше код <script></script> и забыл завершить его. Однако в фактическом коде был конечный тег, и я все еще получаю ту же проблему