Когда я помещаю скрипт прямо в файл .PHP, мой скрипт работает отлично:
function setup()
{
var setRows = <?php if (!isset($_GET['rows']))echo 3;else echo $_GET['rows']; ?>;
var setColumns = <?php if (!isset($_GET['columns']))echo 3;else echo $_GET['columns']; ?>;
document.getElementById('rows').value = setRows;
document.getElementById('columns').value = setColumns;
document.getElementById('rowOutputId').value = setRows;
document.getElementById('colOutputId').value = setColumns;
}
Однако, когда я помещаю его в отдельный файл и связываю его, он печатает буквальную строку вместо правильного значения. Ну вот так:
<script type = "text/javascript" src = "js/file.js"></script>
Это перекликается со следующим:
<?php if (!isset($_GET['rows']))echo 3;else echo $_GET['rows']; ?>
Кроме того, важно отметить, что когда он у меня прямо в файле HTML, он отлично сохраняет PHP без кавычек, но в отдельном файле он дает мне следующую ошибку, если я убираю кавычки:
Uncaught SyntaxError: Неожиданный токен <
Я думаю, вы обнаружите, что ваш HTML-файл на самом деле является файлом .php, верно?
@Denno, вероятно, прав, но вы также можете настроить apache для компиляции php-кода в расширении html.
@charlietfl Я чувствую, что это, вероятно, будет немного более продвинутым вариантом использования, который OP, вероятно, не использует. Однако, если сервер был настроен кем-то другим, это могло быть возможно
@Denno согласен ... не является обычным явлением и является более сложной конфигурацией
Да, это файл PHP, извините. Отредактирую вопрос.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Ваш сервер решает, что делать с запросом, в зависимости от его расширения (это чрезмерное упрощение, но пока подойдет).
Ваш сервер настроен на обработку файлов, заканчивающихся на .php, как файлов php. Это означает, что когда вы запрашиваете этот файл у Apache, Nginx или любого другого программного обеспечения веб-сервера, которое вы используете, ваш веб-сервер сначала запрашивает у программного обеспечения php разбирать и выполнять его. Когда программное обеспечение PHP выполняет первый код, оно запускает все, что находится между <?php и ?>. Затем он вернет результат выполнения кода на ваш веб-сервер, который вернет его клиенту.
Однако, когда ваш браузер загружает файл .js, ваш веб-сервер рассматривает его как «обычный» файл. Затем он прочитает файл и вернет его прямо клиенту, не передавая его сначала программному обеспечению PHP. Следовательно, ничего не будет выполняться или интерпретироваться, и вы просто увидите весь текст в файле.
Теперь предположим, что вы поместили код PHP в файл .js. Он не был выполнен, поэтому код PHP все равно будет присутствовать, когда ваш браузер получит ответ от веб-сервера. Затем ваш браузер попытается проанализировать и выполнить javascript в файле, но ваш тег <?php не является допустимым javascript. Поэтому попытка запустить этот файл вызовет ошибки в консоли вашего браузера.
Вы можете настроить, какие расширения следует рассматривать как код PHP в конфигурации вашего веб-сервера. Для Apache это делается через addHandler, а для nginx - через директивы местоположения. Я бы настоятельно не советовал менять это так, чтобы javascript обрабатывался как PHP, поскольку ваши файлы javascript не должны содержать PHP-код. Если вы хотите передать что-то в переменную, просто сделайте это в HTML-коде, созданном файлом PHP.
Я только что отредактировал свой вопрос. Это файл .PHP. Извините за путаницу.
Нет проблем, я обновил ответ, чтобы учесть это, а также выяснить, почему это вызывает ошибки в консоли вашего браузера. Если это ответ на ваш вопрос, отметьте его как ответ, поставив галочку рядом с ответом.
Поскольку файлы javascript не интерпретируются парсером php, по крайней мере, не по умолчанию