Файл PHP require_once() .js

#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 почему вы считаете это «плохой привычкой»?