Функция 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(); 
}
Другие вопросы по тегам