繁体   English   中英

在外部JS中使用PHP

[英]using PHP in external JS

我有一个很大的验证JS脚本。 我想将此脚本作为外部JS。

一切正常运行,但是在JS中,我使用cookie来处理我的用户表单联结。

此外,我在此JS中使用PHP。

如果JS在html中,则可以使用。 但是,如果我将其放置在外部,则不会。

例如:

外部JS:

$(document).ready(function() {

     var test = $.cookie('tet');
     $.cookie('tet','8'); 

    <?php
     if (isset($_SESSION['main_check_a'])) {
     echo "$.cookie('tet','1');";
    ?>
}}

}

如何将此PHP代码传递给我的外部JS?

你需要

  • 通过将其命名为filename.js.php或更改服务器的PHP配置以解析.js文件,来使PHP解析JS文件。 但是,这并不是最佳选择,因为将为每个脚本请求启动一个资源密集型PHP实例。

  • 或者,更好的IMO, 在嵌入文档中的<script>标记进行必要的检查,并将结果存储在嵌入式外部脚本可以查询的JS变量中。 这样,您的脚本文件可以保持静态。

    在您的情况下,这将意味着类似这样的情况。 在主文件中:

     <script> <?php echo "main_check_a = "; echo (isset($_SESSION['main_check_a']) ? "true" : "false"); ?> </script> .... now, include external JS files .... 

    这将为您提供JavaScript变量main_check_a ,您可以在外部脚本中使用它。

您必须设置服务器来解析此文件。 通常,您会给它扩展名* .php

为了避免特定的问题,您应该在此脚本内发送正确的标头:

header('Content-Type:text/javascript');

如果您无法更改扩展名,则可以使用Apache的AddType-Directive来设置服务器以解析* .js-Files(但我不推荐这样做)

如果您正在尝试php / js代码生成,请立即停止。 这就是我所说的“高风险”实践,因为它模糊了业务和视图逻辑之间的界限。 此外,您最终将难以维护代码,并导致浏览器缓存令人头疼。

除非有充分的理由,否则应始终避免代码生成,并且我不会将cookie处理称为一个很好的理由。 再多考虑一下,您可以提出一个更好,更可维护的解决方案。

按照“可以”和“可以”的方式处理业务逻辑cookie。 换一种说法; 如果有理由使用PHP编写Cookie,请将其保留在PHP中,仅使用JavaScript读取Cookie。

另外,您希望JavaScript文件保持静态文件,否​​则由于浏览器缓存而无法实现预期的效果,因此您必须采取更多措施以防止浏览器缓存文件。

最后,始终正确地进行此操作的工作量较少。

请记住,访问者每次访问您的网站时都必须下载生成的JavaScript,因为浏览器不会对其进行缓存。

如果您是我,我会考虑重新设计整个过程,这样一来您就不需要PHP生成的JavaScript。

配置PHP来解析.js文件,或者将您的外部JavaScript文件/yourjavascriptfile.js.php

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM