Javascript 加载的js与硬编码的不同

Javascript 加载的js与硬编码的不同,javascript,Javascript,我有下面的脚本,工作完美 <script type="text/javascript"> $(document).ready(function() { php_test(); }); </script> <script type="text/javascript"> function php_test() { alert('<?php echo(DIR); ?>myfile'); } </script

我有下面的脚本,工作完美

<script type="text/javascript">
$(document).ready(function() {
        php_test();
});
</script>     

<script type="text/javascript">
function php_test() {
    alert('<?php echo(DIR); ?>myfile');
}   
</script>
当我将函数php_test放在一个文件中时,让我们说“php_test.js”,并将其绑定到我的页脚,它将执行以下输出:

<?php echo(DIR); ?>myfile
myfile

有什么解释吗?我很困惑…

你问这个问题的方式让人困惑。通过对Apache进行一些调整,可以使PHP在服务器上的所有类型的文件上运行。我的解决方案将使您的JS文件由PHP解释器处理

如果您使用的是Apache,则需要创建一个.htaccess文件。我想你是的。然后将这一行添加到其中:

AddType application/x-httpd-php .php .js
上面的代码将强制PHP解释器在命令中列出的所有格式上运行。如果需要PHP处理服务器端的文件,还可以添加.htm甚至.css

有关类似问题的先前解决方案,请参阅此问题>


或者您可以将PHP端的一大堆变量作为Javascript变量存储在页面上,就像我的一个项目中的示例:

        <script type="text/javascript">
            var trackFilterFlag = null;
            <?php
                echo "trackFilterFlag = \"". $displayedPageType ."\";\r\n";
            ?>

            var trackFilterCategory = null;
            <?php 

                if(strcmp($displayedPageType, "mood") === 0 || strcmp($displayedPageType, "genre") === 0) {
                    echo "trackFilterCategory = \"". $filterCategory ."\";\r\n";
                } 

            ?>

            var sortingTracksBy = null;
            <?php
                if( isset($chosenSortFlag) && strlen($chosenSortFlag) > 3 && !($defaultSort) ) {
                    echo "sortingTracksBy = \"". $chosenSortFlag ."\";\r\n";
                }
            ?>

        </script>

var trackFilterFlag=null;
var trackFilterCategory=null;
var sortingTracksBy=null;

当然,当我编写代码时,我还是一个新手,可以让代码更整洁,让PHP呼应整个代码,但是你明白我的意思:)

解释?了解PHP何时运行。PHP在此页面上运行。所以output1是生成的。php不是在js文件中编译的。。。它运行在php文件中。老实说,这不是一个坏问题,只是你的措辞让它令人困惑,人们都投了反对票。@Aaron这是一个研究不足的问题。了解PHP和Javascript之间的关系是在这两种语言中进行编程的先决条件(如果提问者知道,他并没有告诉我们这一点)。我把我的函数调用改为php_test(“”);我想现在我对这个主题了解得更多了,效果会更好。理论上是的,它会稍微降低性能,但老实说,这是可以忽略不计的。假设您的单个.php页面加载了5个JS文件,那么是的,php预编译器/解释器将运行6次,而不是仅对.php文件运行1次。但是,从总体上看,这并不会严重降低绩效,这是对HTACCESS文件的合法使用,PHP开发人员已经知道,有很多网站已经动态创建了用于各种目的的.js和.css文件:)您还可以做的另一件事是在Javascript区域设置一大堆全局变量。我将在我的答案底部添加一个示例代码,但是,听起来你已经在上面了:)做得不错。我想我知道它是如何工作的。
        <script type="text/javascript">
            var trackFilterFlag = null;
            <?php
                echo "trackFilterFlag = \"". $displayedPageType ."\";\r\n";
            ?>

            var trackFilterCategory = null;
            <?php 

                if(strcmp($displayedPageType, "mood") === 0 || strcmp($displayedPageType, "genre") === 0) {
                    echo "trackFilterCategory = \"". $filterCategory ."\";\r\n";
                } 

            ?>

            var sortingTracksBy = null;
            <?php
                if( isset($chosenSortFlag) && strlen($chosenSortFlag) > 3 && !($defaultSort) ) {
                    echo "sortingTracksBy = \"". $chosenSortFlag ."\";\r\n";
                }
            ?>

        </script>