<?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
内的代码而回响。是原因吗?它会一直有用吗?
答案 0 :(得分:3)
在运行任何JavaScript之前,PHP都在服务器上运行。首先执行PHP,然后执行JavaScript。接下来,$(function(){ ... });
意味着在DOM加载完成后运行JavaScript,因此alert($(".myClass").attr("data-attr"));
仅在DOM加载后发生,这就是为什么它可以正常工作。
答案 1 :(得分:1)
PHP由接收您请求的服务器执行并呈现。 Javascript在收到contennt后由浏览器执行
use strict;
use warnings;
use Text::ParseWords;
my $var = q{Id;Id2;my name \'is Ankit;code};
my @words = quotewords('\;', 0, $var);
print scalar @words; #prints 4
解析后,浏览器会收到类似于以下内容的内容:
<?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>
在此之后,它将执行javascript。
TL; DR:执行第一个php,然后执行javascript
答案 2 :(得分:0)
它会正常工作!但只是因为你用$(function()){}
(简写为$( document ).ready()
)包围你的JS代码,否则浏览器可能会尝试首先执行你的JS代码,甚至在页面完全加载之前。
请记住,PHP将始终执行之前,当您的浏览器加载HTML页面时,PHP已在服务器端执行