Функция JavaScript не работает правильно
У меня есть эта маленькая функция
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);
}
5 ответов
Я предполагаю, что у вас все еще есть это в файле, который анализируется PHP, как другие уже сказали. Тогда, вероятно, что-то над этим фрагментом кода сбивает с толку php-парсер, поэтому он не распознает 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 (т.е. .phtml/.php), в файл.js? Обратите внимание, что любой PHP, который вы ожидаете выполнить, должен быть проанализирован синтаксическим анализатором PHP перед доставкой клиенту. Если бы он был изначально в.php-файле, он был бы проанализирован / выполнен и работал нормально.
Однако файлы.js по умолчанию не анализируются PHP. Возможно, они когда-то были, но администратор вашего сервера недавно что-то обновил и потерял это поведение? Вы можете использовать локальный файл конфигурации (в Apache,.htaccess) для его повторного включения.
Этот код должен находиться в файле, который анализируется PHP перед отправкой в браузер. Убедитесь, что у него есть расширение ".php" (или что Apache/(или другой) настроен на установку того расширения, которое оно использует через PHP). Также убедитесь, что PHP установлен правильно и работает.
Убедитесь, что вы запускаете страницу с веб-сервера следующим образом: http://localhost/yourpage.php
а не прямо из самого файла вот так: file://yourpage.php
Я не уверен, поможет ли это, но лучшие практики диктуют, что всякий раз, когда вы пишете в новое окно с использованием 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();
}