Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Почему не выполняется код js внутри php?

Paho Оракул (62513), открыт 2 недели назад
но если вставить этот код в консоль - выполняется
3 ответа
Mr. Letplay Гуру (4462) 2 недели назад
Экранизируйте кавычки
echo "<script type=\"text/javascript\" src=\"js/
PahoОракул (62513) 2 недели назад
echo "<script type=\"text/javascript\" src=\"../js/history.js\">document.getElementById(\"alert\").innerHTML = \"<div class=\"naideno\" style=\"float:right\">Найдено: $count</div>\";</script>"; так тоже не выполняется, где я ошибся
Павел МихаловскийПросветленный (33250) 2 недели назад
Так у него в JS коде ординарные кавычки
Павел МихаловскийПросветленный (33250) 2 недели назад
А в echo двойные
Paho Оракул (62513) Павел Михаловский, echo '<script type=\"text/javascript\" src=\"js/history.js\">document.getElementById("alert").innerHTML = "Test";</script>'; так тоже не выполнило
Татьяна Просветленный (32636) 2 недели назад
Скорее всего, проблема заключается в том, что PHP генерирует HTML и JavaScript код, но JavaScript код не выполняется, так как он не воспринимается браузером как часть документа.


Во-первых, убедитесь, что HTML элемент с id 'alert' существует на странице к тому моменту, когда выполняется JavaScript код. Если элемента нет, скрипт не сможет изменить его содержимое.

Во-вторых, убедитесь, что строка с JavaScript кодом корректно интерпретируется PHP и HTML. В вашей строке есть синтаксическая ошибка в атрибутах HTML тега div.

исправленный код:
 $stmt->execute([$search]); 
else $stmt->execute(NULL);
$count = $stmt->rowCount();
while ($row = $stmt->fetch(PDO::FETCH_ASSOC))
getTablesTovar($row);
echo "";
Основные изменения:

Я использовал обратные косые черты (\) для экранирования кавычек внутри строки.
Проверил наличие элемента с id 'alert' в вашем HTML документе.
 

PahoОракул (62513) 2 недели назад
echo "<script>document.querySelector('html').innerHTML = 'Test';</script>"; даже так не меняет))
Павел Михаловский Просветленный (33250) 2 недели назад
Я сомневаюсь, что так можно подкинуть JS-код.
Ты пробовал для начала console.log хотя бы кинуть так и посмотреть, выполнится ли?
Вообще для таких вещей существует ajax. То есть через JS делаешь запрос на сервер и тебе возвращается ответ, который обрабатывается JS уже на сайте. Читать тут - https://learn.javascript.ru/fetch
PahoОракул (62513) 2 недели назад
с jquery меняло прям внутри .php скриптов в определенных местах, а когда переписал всё на ванильный js - перестало
Павел Михаловский Просветленный (33250) Paho, а почему от него отказался тогда? Опять же, проверь, работает ли в принципе скрипт. console.log('TEST') запусти и посмотри, выведется ли в консоли
Похожие вопросы