php-js的执行顺序是什么?


What is the order of execution php-js?

     <?php
         //Started or resumed the session
     ?>
     <html>
        <head>
           <script type="text/javascript" src="myjavascript.js"></script>
        </head>
        <body>
            <div class="myClass" data-attr=<?php echo $_SESSION["mySession"]?>></div>
        </body>
     </html>

这是我的php。

在我的js文件中,我有一些像

   $(function(){
        alert($(".myClass").attr("data-attr"));
    });

返回正确的值。我不明白执行的顺序。因为头部分在前面,然后是div[myclass]。因此,计算在稍后的时间点进行。

是否因为我将代码包围在domready内而产生回声?这是原因吗?它会一直有效吗?

PHP在运行任何JavaScript之前在服务器上运行。首先执行PHP,然后执行JavaScript。接下来的$(function(){ ... });意味着运行JavaScript一旦DOM完成加载,所以alert($(".myClass").attr("data-attr"));只发生在DOM加载后,这就是为什么它会正常工作。

PHP由接收请求的服务器执行和呈现。浏览器在接收到

内容后执行Javascript。
 <?php
     //Started or resumed the session
     //Not visible to the browser
echo "Something";
 ?>
 <html>
    <head>
       <script type="text/javascript" src="myjavascript.js"></script>
    </head>
    <body>
        <div class="myClass" data-attr=<?php echo $_SESSION["mySession"]?>></div>
    </body>
 </html>

解析后,浏览器接收到如下内容:

something
 <html>
    <head>
       <script type="text/javascript" src="myjavascript.js"></script>
    </head>
    <body>
        <div class="myClass" data-attr="whateverisinthesession"></div>
    </body>
 </html>

之后,它将执行javascript。

TL;DR:首先执行php,然后执行javascript

会正常工作的!但只是因为你用$(function()){}(简称为$( document ).ready())包围了JS代码,否则浏览器可能会尝试先执行你的JS代码,甚至在页面完全加载之前。请记住,PHP总是在浏览器加载HTML页面之前执行,PHP已经在服务器端

执行了。