Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript lint不';无法识别嵌入式PHP_Javascript_Php - Fatal编程技术网

JavaScript lint不';无法识别嵌入式PHP

JavaScript lint不';无法识别嵌入式PHP,javascript,php,Javascript,Php,我在vim中使用JavaScript Lint。最近,我将纯JavaScript转换为php,以便添加某些服务器端内容。我在vim中设置了文件类型,例如:s filetype=javascript.php test.php: /*jsl:ignore*/ <?php header("Content-type: application/x-javascript"); ?> /*jsl:end*/ function foo() {...} 这里重要的是,图片ID和/或图片所有者和

我在vim中使用JavaScript Lint。最近,我将纯JavaScript转换为php,以便添加某些服务器端内容。我在vim中设置了文件类型,例如
:s filetype=javascript.php

test.php:

/*jsl:ignore*/
<?php
  header("Content-type: application/x-javascript");
?>
/*jsl:end*/

function foo() {...}
这里重要的是,图片ID和/或图片所有者和/或图片存储位置之间绝对没有相关性。客户端必须查询数据库以找出文件存储的位置(原因是用户图片是按任意顺序添加的,并且经常被移动)。假设有1000张图片,我想将它们全部加载到浏览器中(小缩略图)

我可以加载
index.html
,然后使用Ajax获取所有1000个文件位置,并设置为使用类似的图像填充浏览器

for (var i = ; i < picturePaths.length ;i++){
    var img = new Image();
    img.src = picturePaths[i];
}
for(变量i=;i
但我不想使用Ajax,因为它启动和检索任何查询都非常慢(3/4)。相反,我想在页面加载时设置所有的
img.src
属性


现在John Watson提到我可以/应该在单个变量中返回所有这些,并引用它。我不是专家,所以他可能是对的。然而,我的网站非常复杂,而且不同的脚本经常从服务器动态加载,我不希望将重要的图像路径存储在单个全局对象中。

我的解决方案是尽可能将PHP和JavaScript分开

让PHP将需要输出的内容输出到HTML中,然后如果您想使用它,就从JavaScript中获取它。如果你告诉我们你在做什么,我可以给你更具体的例子


动态吐出JavaScript文件可能会有问题,因为它将缓存在浏览器上,因此第二次和后续请求可能不会返回到服务器以获取重新评估的脚本文件。

我假设您的代码中包含类似以下内容的JavaScript:

var data = '<?php echo $some_value ?>';
    <script type="text/javascript">
    var MyNamespace = {
            data1: "value1",
            data2: "value2"
    };
    </script>

这些评论的要点是什么,
/*jsl:ignore*/
?为什么要在javascript中使用php头函数?@Col.shrapanel
/*jsl:ignore*/
告诉JavascriptLint“忽略”它和
/*jsl:end*/
之间的一切,这是为了那些不是错误但仍然危险的事情,像
var i++=++j
@Catfish
foo()
从服务器(数据库)获取图像文件名。我想让我的php脚本将该图像文件名传递给
foo()
,这样以后就不必发出AJAX请求……同时它告诉浏览器开始输出,因此php无法发送标头。他没有
var data=”这一问题我不清楚。。。如果他不这样做,那么就根本没有理由首先将javascript变成一个.php文件。他可以这样做来插入变量,或者如果定义的话,可以做“预处理器”。我并不是说这是一个最佳实践或任何东西,但它至少使sense@missingno抱歉,我没有详细介绍b/c,我以为修复JavascriptLint有一个简单的答案。事实上,我在服务器上有动态加载的脚本,它们反过来链接到其他要加载的文件,每个文件都充当自己的自包含模块。在将每个“模块”提交给客户端之前,在服务器端单独修改它们是很自然的。@puk:如果您只是使用这个php来实现模块魔术,那么您应该考虑使用像requireJS这样的真正的模块系统。它可以更好地管理依赖关系,让您可以在一个文件中编译所有内容,以用于生产和许多其他用途。我不知道它可以被缓存。这将是一个严重的问题。我想到的是从数据库加载多个图像。我希望服务器在返回页面时更新
image.src
,而不是查询数据库中的图像路径
    <script type="text/javascript">
    var MyNamespace = {
            data1: "value1",
            data2: "value2"
    };
    </script>
    <script type="text/javascript" src="my-actual-script.js">
    var data = MyNamespace.data;