У меня есть эта маленькая функция
function makewindows(){
child1 = window.open ("about:blank");
child1.document.write("<?php echo htmlspecialchars(json_encode($row2['ARTICLE_DESC']), ENT_QUOTES); ?>");
child1.document.close();
}
Что бы я ни пробовал, просто выводит код php как источник html, а не результат кода php. Раньше это работало нормально, и я не уверен, что я изменил, чтобы привести к такому поведению.
Я вставил весь код сейчас. Ошибка генерируется ссылкой, которая вызывает updateByQuery, что мешает правильному синтаксическому анализу makewindows .. Я думаю. Однако я не уверен, что не так с updateByQuery:
function updateByQuery(layer, query) {
url = "get_records.php?cmd=GetRecordSet&query = "+query+"&sid = "+Math.random();
update(layer, url);
}
Файл включен в тег скрипта. Я изменил вещи, относящиеся к приложению ajax, например, другие методы javascript в файле.






Этот код должен находиться в файле, который анализируется PHP перед отправкой в браузер. Убедитесь, что у него есть расширение «.php» (или что Apache / (или другое) настроен на установку любого расширения, которое он использует, через PHP). Также убедитесь, что PHP установлен правильно и работает.
Этот файл JavaScript включен в index.php и раньше работал нормально. Остальные функции javascript и файлы php работают нормально.
Вы недавно переместили этот файл из анализируемого файла PHP (например, .phtml / .php) в файл .js? Обратите внимание, что любой PHP, который вы ожидаете выполнить, должен быть проанализирован синтаксическим анализатором PHP перед доставкой клиенту. Если бы он был изначально в файле .php, он был бы проанализирован / выполнен и работал нормально.
Однако по умолчанию файлы .js не анализируются PHP. Возможно, когда-то они были, но администратор вашего сервера недавно что-то обновил и потерял такое поведение? Вы можете использовать локальный файл конфигурации (в Apache, .htaccess), чтобы снова включить его.
он всегда был в файле .js, который был загружен из файла php, который не изменился.
Тогда мои деньги твердо вложены в недавнюю реконфигурацию вашего администратора, предотвращающую синтаксический анализ файлов .js с помощью PHP.
Да, проблема в том, что он не разбирается.
Я администратор и ничего не менял.
Убедитесь, что вы запускаете страницу с веб-сервера. вроде такой: http://localhost/yourpage.php а не напрямую из самого файла вот так: file://yourpage.php
файл определенно обслуживается
Я предполагаю, что он все еще находится в файле, который анализируется PHP, как уже говорили другие. Тогда, вероятно, что-то выше этого фрагмента кода сбивает с толку php-parser, поэтому он не распознает php-тег.
Чтобы проверить это, попробуйте вывести что-нибудь еще перед этой функцией, возможно, просто комментарий или что-то в этом роде.
Также используйте «var» перед client1, иначе client1 будет в глобальной области.
обновление 1 Поскольку вы пытались вставить фрагмент php-кода, и он сломался, проблема в том, что сервер не разбирает файл должным образом.
Чтобы проверить, действительно ли сервер анализирует ваши файлы .js (я считаю, что это не настройка по умолчанию), создайте новый файл: test.js
<?php echo "This is a test"; ?>
Откройте в браузере файл test.js и посмотрите исходный код страницы. Если у него есть теги php, ваш сервер не анализирует файлы .js.
обновление 2 Если php работает в файлах .js, попробуйте переписать функцию следующим образом (извините, я не тестировал это, потому что у меня сейчас нет доступа к php-серверу)
<?php
echo "function makewindows(){var child1 = window.open (\"about:blank\"); " .
"child1.document.write(\"" . htmlspecialchars(json_encode($row2['ARTICLE_DESC']), ENT_QUOTES) . "\");" . "child1.document.close(); }";
?>
Похоже, вы просто поместили туда предупреждение, для этого вам нужно использовать php. как <? php echo "alert ('php test');" ?>
Проблема НЕ в javascript, потому что javascript не анализирует php. Проблема в том, что по какой-то причине ваш php-парсер на сервере не разбирает php должным образом.
Сейчас у меня нет доступа к php-серверу, поэтому я не могу протестировать код.
Добавление предупреждения PHP определенно нарушает его и вызывает ошибку в ссылке, которая вызывает функцию выше makewindows. Я вставлю этот код сейчас.
Код PHP анализируется и запускается на сервере, а javascript - на клиенте. Если клиенту приходит php-код, значит, сервер не проанализировал PHP ...
какой-то код php работает, но не код php в makewindows
кажется, что после updateByQuery возникла проблема, поскольку запрос, который является функцией php, передается нормально, но что-либо после, например, makewindows, не выполняется.
Похоже, что-то сбивает с толку php-parser ... Несколько лет назад у меня была аналогичная проблема с другим языком. Тогда это произошло из-за открытой цитаты или из-за того, что я раньше вставлял какие-то странные символы, которые не нравились парсеру.
Вы можете попробовать решить проблему так: создайте новый файл, добавьте в него фрагмент php-кода и проверьте, что он работает. Затем скопируйте часть за частью из исходного файла в новый и посмотрите, где она перестает работать.
Кажется, что переменные, переданные с php, без проблем получаются, но не анализируются php. Остальная часть сайта - это файлы .php и нормально разбирается.
Вы хотите сказать, что файлы «* .php» анализируются, но не «.js»?
да, файлы .js передаются как javascript. Я думаю, что эта проблема не имеет ничего общего с конфигурацией сервера, так как это easyphp и не изменилось, изменился только файл
Просто для удовольствия измените имя на something.php и просмотрите файл в своем браузере, чтобы убедиться, что он правильно проанализирован.
да, он отлично работает, если я это сделаю, источник показывает содержимое artcile_desc
Отлично. Теперь вам нужно настроить свой веб-сервер для анализа файлов .js. Я не вижу, чтобы вы указали, на каком веб-сервере или какой платформе вы находитесь. Один из способов - использовать файлы .htaccess, и, возможно, вы случайно удалили тот, который у вас был.
Обычно файл .htaccess скрыт, поэтому, если вы скопировали файлы из одного места в другое, вы могли пропустить этот файл конфигурации.
На данный момент я использую easyphp для Windows. Я до сих пор это проблема в коде, так как я не касался конфигурации сервера, а php в javascript раньше работал нормально.
Поскольку он работает, если он у вас как «.php», а не когда он у вас как «.js», все в порядке с файлом, но с конфигурацией вашего сервера. Я не знаком с easyphp, но, поскольку он использует apache, это не должно быть большой проблемой.
Выполните поиск по запросу "apache php parse", и вы получите несколько предложений
eaysphp автоматически проанализирует php в javascript. Это определенно проблема с моим кодом, и я отредактировал свое сообщение, чтобы показать весь код. Изменение конфигурации, чтобы гарантировать, что .js анализируется, ничего не исправило.
Я не уверен, что это поможет, но лучшие практики диктуют, что всякий раз, когда вы пишете в новое окно с помощью JavaScript, вы должны открывать и закрывать документ. Вы можете это попробовать?
function makewindows(){
var child1 = window.open ("about:blank");
child1.document.open();
child1.document.write("<?php echo htmlspecialchars(json_encode($row2['ARTICLE_DESC']), ENT_QUOTES); ?>");
child1.document.close();
}
@cLFlaVA: Проблема в том, что код PHP не анализируется, и это не зависит от того, открыт документ или нет. Но хорошо, что вы на это указали. Хотели бы вы отредактировать свой ответ и поставить «var» перед первым «child1», чтобы переменная стала локальной, а не глобальной?
Хорошая точка зрения; спасибо :) Хотя, исходя из небольшого фрагмента кода, предоставленного OP, child1 май был объявлен глобально по какой-то причине.
Пара вопросов: что именно вы изменили между последним разом, когда это работало так, как вы ожидали, и первым разом, когда он сломался? Как / где этот скрипт включается в файл? Это PHP, включенный в тег скрипта или тег скрипта с атрибутом src?