PHP require_once() .js 文件
Posted
技术标签:
【中文标题】PHP require_once() .js 文件【英文标题】:PHP require_once() .js file 【发布时间】: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 【参考方案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>
现在,让我们拥有一个具有该结构的组件。如果您的某些模板多次包含该组件,则您的脚本将仅嵌入一次,即在第一个中。
【讨论】:
以上是关于PHP require_once() .js 文件的主要内容,如果未能解决你的问题,请参考以下文章