【问题标题】:PHP require_once() .js filePHP require_once() .js 文件
【发布时间】:2014-08-14 11:43:31
【问题描述】:

好的,所以我正在使用 require_once 来加载 .js 文件的内容。但是,在 require 完成后,似乎在文件末尾添加了 1

PHP:

echo require_once("test.js");

JS:

var newFunc = function() {
    console.log('yay!');
};

加载 PHP 文件时渲染的 html:

var newFunc = function() {
    console.log('yay!');
};1

【问题讨论】:

  • 您的做法似乎完全违背了最佳实践。您应该使用脚本标签添加脚本。
  • 提出异议,但这是针对通过 Ajax 加载的文档。我有一个函数可以在请求加载后将 JS 代码附加到脚本标记。
  • require_once 与include 非常相似,主要针对包含php-scripts。不要用它来包含js。
  • 在我看来,您正在让您的网站对 JS 注入漏洞敞开大门。也许您可以看到其他实现目标的方法?
  • 将不同的脚本放在不同的文件中,然后只获取您需要的脚本的 URL。这样,您就可以在 HTML 中创建一个脚本元素,并将 src 属性设置为您刚刚获得的 URL。这样做的目的是保证只能加载用预定义脚本文件编写的代码,因此更安全。要真正安全如系统,请务必激活Same Origin Policy

标签: javascript php require-once


【解决方案1】:

require_once() 如果包含成功则返回 1。所以你在回应返回值,这不是你想象的那样。

请改用file_get_contents(),虽然这是一种奇怪的用法,但无论你想用这个做什么,你都可能走错了方向……

【讨论】:

  • 我试过了,但它没有加载文件,即使它在同一个目录中。
  • file_get_contents() 返回什么?使用 print_r(file_get_contents($your_path));看看它返回了什么。
  • 警告:file_get_contents(test.js):打开流失败:没有这样的文件或目录...
  • 您的路径一定不正确。您的路径是否以字符串的形式正确引用,并且与正在运行的 PHP 脚本位于同一目录中?
  • 是的,它与我用于 require_once 的路径完全相同
【解决方案2】:

您应该从 "echo require_once("test.js");" 中删除 echo

您可以通过以下方法包含js文件

<script src="test.js" language="javascript"> </script>

【讨论】:

  • 那行不通,因为我需要将 javascript 加载到 HTML 中。
  • 在php文件中,关闭php标签,使用上面的标签。
  • 使用require_once来包含js文件确实是个坏习惯。一个应该通过 . 包含外部js
  • @SilverBullet 为什么你认为这是一个“坏习惯”?
【解决方案3】:

如果您想“即时”导入脚本并希望它只加载一次,我们可以将require_once 与脚本“组合”,如下所示:

<script>
  <?php require_once('your-script.js'); ?>
</script>
<div>Foo</div>

现在,让我们拥有一个具有该结构的组件。如果您的某些模板多次包含该组件,则您的脚本将仅嵌入一次,即在第一个中。

【讨论】:

    猜你喜欢
    • 2012-09-27
    • 2021-02-09
    • 1970-01-01
    • 2013-03-27
    • 1970-01-01
    • 2012-03-27
    • 1970-01-01
    • 2014-06-20
    • 2012-04-12
    相关资源
    最近更新 更多