#javascript #php #require-once
#javascript #php #требовать-один раз
Вопрос:
Итак, я использую require_once для загрузки содержимого файла .js. Однако, похоже 1
, что после выполнения запроса в конец файла добавляется a .
PHP:
echo require_once("test.js");
JS:
var newFunc = function() {
console.log('yay!');
};
визуализируется html при загрузке PHP-файла:
var newFunc = function() {
console.log('yay!');
};1
Комментарии:
1. То, как вы это делаете, кажется, полностью противоречит лучшим практикам. Вы должны добавлять свои скрипты, используя теги скриптов.
2. Возражение принято к сведению, но это для документа, загруженного через Ajax. У меня есть функция, которая добавляет JS-код к тегу скрипта после загрузки запроса.
3. require_once очень похож на include и в основном предназначен для включения php-скриптов. Не используйте его для включения js.
4. Мне кажется, вы оставляете свой сайт широко открытым для уязвимости при внедрении JS. Может быть, вы можете увидеть какой-то другой способ, которым вы могли бы достичь своих целей?
5. Поместите ваши разные скрипты в разные файлы, а затем получите только URL-адрес нужного вам скрипта. Таким образом, вы можете просто создать элемент script в HTML и установить атрибут src в качестве URL-адреса, который вы только что получили. Это гарантирует, что можно загружать только код, написанный в предопределенных файлах сценариев, так что это безопаснее. Чтобы действительно защитить, например, system, обязательно активируйте политику Same Origin
Ответ №1:
require_once() возвращает 1, если включение было успешным. Итак, вы повторяете возвращаемое значение, которое не соответствует тому, что вы думали.
Вместо этого используйте file_get_contents() , хотя это странное использование, вы, вероятно, движетесь в неправильном направлении, что бы вы ни пытались с этим сделать…
Комментарии:
1. Я пробовал это, но он не загружает файл, даже если он находится в том же каталоге.
2. Что возвращает file_get_contents()? используйте print_r(file_get_contents($your_path)); чтобы увидеть, что он возвращает.
3. Предупреждение</b>: file_get_contents(test.js ): не удалось открыть поток: нет такого файла или каталога…
4. Ваш путь должен быть неправильным. Правильно ли указан ваш путь в виде строки и в том же каталоге, что и запущенный PHP-скрипт?
5. да, это точно такой же путь, который я использовал для require_once
Ответ №2:
Если вы хотите импортировать скрипт «на лету» и хотите, чтобы он загружался только один раз, мы можем «объединить» require_once
со скриптом, например:
<script>
<?php require_once('your-script.js'); ?>
</script>
<div>Foo</div>
Теперь, пусть у вас есть компонент с такой структурой. Если некоторые из ваших шаблонов включают этот компонент много раз, ваш скрипт будет внедрен только один раз, в первый.
Ответ №3:
Вы должны удалить echo из «echo require_once («test.js «);»
вы можете включить js-файл следующим способом
<script src="test.js" language="javascript"> </script>
Комментарии:
1. Это не сработает, так как мне нужно, чтобы javascript загружался встроенным вместе с HTML.
2. В php-файле, закрыв php-тег, используйте приведенный выше тег.
3. Использование require_once для включения js-файла действительно плохая привычка. Следует включить внешний js через <script></script> .
4. @SilverBULLET почему вы считаете это «плохой привычкой»?