Всем привет. Собственно проблема следующего характера: имеем 3 файла (1.php, 2.php, 3.js). В файле 1.php содержится разметка страницы (другими словами html), в файле 2.php содержится код php, ну и в файле 3.js есть наши скрипты. Приблизительный листинг файлов. 1.php HTML: <?php require_once("2.php"); ?> <!DOCTYPE html> <html lang="ru"> <head> ... </head> <body> ... <button type="submit" name="ura_zarabotalo" class="btn btn-success">Ура, заработало</button> <script type="text/javascript" src="jquery-3.3.1.min.js"></script> <script type="text/javascript" src="3.js"></script> </body> </html> 2.php PHP: <?php //Всю петрушку описывать не буду, она не важно, там идет обработка и проверка массива $data, вот только важно окончательное условие if ( empty($errors) ) { //ошибок нет echo "<script>ShowMyNotify(1,'Ура','Все гут');</script>"; }else { //ошибки есть echo "<script>ShowMyNotify(3,'Йопт','Засада');</script>"; } } 3.js Код (Javascript): function ShowMyNotify(idMessage, textTitle, textBody) { alert(idMessage+textTitle+textBody); }; Так вот соль начинается в том, что в файле 2.php я естественно не подключаю свой js, т.к. у меня там только php-код, да и не нужен он там. В файле 1.php я подключаю все свои скрипты перед закрывающим тегом body, и вместе с тем в первых строках подключаю 2.php. Происходит ошибка Код (Text): Uncaught ReferenceError: ShowMyNotify is not defined at 1.php:1 Как я думаю, по той причине, что файл с самими скриптами подключается позже. Как быть в данной ситуации? Вызов функции со скрипта необходим именно с файла 2.php Может в самом скрипте (или где-то еще) дожидаться загрузки страницы и как это сделать? Да, забыл написать, если подключать 2.php после скриптов, то все работает замечательно. Но в этом файле еще есть генерация html для файла 1.php =) Во, завернул =) Есть конечно идея разделить файл на 2.php на 2 файла и все заработает, но не хотелось бы. Спасибо за помощь.
выводи сразу алерт, в твоей функции нет смысла: PHP: if ( empty($errors) ) { //ошибок нет echo "<script>alert(1,'Ура','Все гут');</script>"; }else { //ошибки есть echo "<script>alert(3,'Йопт','Засада');</script>"; } }
Ну, вообще-то, алерт я указал для примера. Мне важно разобраться с логикой решения задачи, а под свои задачи я ее уже "прогну".
Вывод <script> до <!DOCTYPE html> ? Или неудачный пример, или пересмотрите реализацию. Можно. Но обычно в этом нет необходимости. Если шаблон нужно выполнить в каком-то контексте/окружении, то просто делают его подключение, а не подключение к нему.