-3

嗨,我有一个 javascript 文件,我试图在 php 中将图像的路径提供给它,例如,

var arrowimages = {
  down:['downarrowclass', '<?php echo $_SERVER[REMOTE_HOST]; ?>/ultimate-legal-aid/administrator/down.gif', 23],
  right:['rightarrowclass', '<?php echo $_SERVER[REMOTE_HOST]; ?>/ultimate-legal-aid/administrator/right.gif']
}

但它不起作用。请帮助我以正确的方式定义路径。

4

4 回答 4

2

如果您的文件是 .js 扩展名,则 PHP 引擎将永远不会编译它(因为浏览器不请求 php 文件,apache 只会提供资源)。将 php 扩展名添加到您的 js 文件中。

于 2012-10-19T10:39:04.763 回答
2

除非您将服务器配置为将 JavaScript 文件传递​​给 PHP 解析器,否则这将不起作用。这可以通过配置 Apache 来完成:

AddHandler application/x-httpd-php5 .js

或 nginx:

location ~ \.js$ {
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include        fastcgi_params;
}
于 2012-10-19T10:39:10.863 回答
1

它不起作用的事实与您如何在 javascript 中嵌入 PHP 无关。在我解释发生了什么之前,我想确保您知道客户端语言和服务器端语言之间的区别。

当用户输入页面的 URL 并按 Enter 键时,会向您的 Web 服务器发送对该页面的请求。由于您的服务器的配置方式,此请求将告诉 serevr 运行 PHP 脚本。PHP 是一种服务器端语言。这意味着用户永远不会看到您的 PHP 代码。无论此 PHP 脚本输出什么,无论是 HTML、CSS、Javascript 还是其他类型的文件,都将发送给用户。

如果您的输出包含 javascript,下载后将由用户的浏览器执行。这意味着在您提供的代码片段中,PHP 脚本将输出

var arrowimages={down:['downarrowclass', '12.12.12.12/ultimate-legal-aid/administrator/down.gif', 23], right:['rightarrowclass', '12.12.12.12/ultimate-legal-aid/administrator/right.gif']}.

现在,您看到的这些数字可能不是 12.12.12.12,而是其他一些在它们之间带有点的数字系列。这是一个 IP 地址。更具体地说,它是用户的 IP 地址。因此,此输出的路径将是用户计算机上的路径,并且用户很可能没有运行 Web 服务器,因此不会为您提供任何图像。您应该用这一行替换该行:

var arrowimages={down:['downarrowclass', '<?php echo $_SERVER["SERVER_NAME"]; ?>/ultimate-legal-aid/administrator/down.gif', 23], right:['rightarrowclass', '<?php echo $_SERVER["SERVER_NAME"]; ?>/ultimate-legal-aid/administrator/right.gif']}
于 2012-10-19T10:47:48.350 回答
0

你忘记了引号

$_SERVER['REMOTE_HOST']
于 2012-10-19T10:35:02.917 回答