在外部JS中使用PHP

时间:2010-10-05 09:17:12

标签: php javascript

我有一个很大的验证JS脚本。我想把这个脚本放在外部JS。

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

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

如果在HTML中的JS,那么工作。但是,如果我把它放到外部,那么没有。

例如:

外部JS:

$(document).ready(function() {

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

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

}

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

5 个答案:

答案 0 :(得分:5)

你需要

  • 让PHP解析JS文件,命名为filename.js.php或更改服务器的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

答案 1 :(得分:3)

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

为避免特殊问题,您应在此脚本中发送正确的标头:

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

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

答案 2 :(得分:2)

如果您正在尝试使用php / js代码生成,请立即停止。这就是我称之为“高风险”的做法,因为它模糊了业务和视图逻辑之间的界限。此外,您最终难以维护代码汤和浏览器缓存问题。

应该始终避免代码生成,除非有充分的理由,我不会将cookie处理称为一个很好的理由。经过深思熟虑后,您可以提出更易于维护的解决方案。

按照'我可以'和'我可以'的方式处理业务逻辑cookie。换一种说法;如果有理由用PHP编写cookie,请将其保存在PHP中,并且只能使用JavaScript读取cookie。

此外,您希望JavaScript文件保留为静态文件,或者由于浏览器缓存而无法执行您希望执行的操作,并且您必须使用更多黑客来阻止浏览器缓存文件。

最后,一直以正确的方式完成工作的工作量减少了。

答案 3 :(得分:2)

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

如果我是你,我会考虑重新设计整个事情,这样你就不需要PHP生成的JavaScript了。

答案 4 :(得分:1)

配置PHP以解析.js个文件,或命名外部JavaScript文件/yourjavascriptfile.js.php