Вопрос

У меня есть эта маленькая функция

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);
}
Это было полезно?

Решение

Я предполагаю, что у вас все еще есть это в файле, который анализируется 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(); 
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top