为了更好地理解php的执行,我一直在摆弄php。我发现,当在页面末尾使用php代码块运行相同的代码时,它会产生不同的输出。有人能给我解释一下吗。当我在做我的迷你项目的时候,这种不同让我疯狂了好几天。
<?php
if(isset($_POST["btn1"])){
echo "btn1";
die();
}
?>
<html>
<body>
<button id="btn1" name="btn1">btn1</button>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("#btn1").click(function(){
$.ajax({
type:'post',
url:'',
data:{'btn1':true},
datatype:'text',
success:function(val){
alert(val);
}
});
});
});
</script>
</body>
</html>PS。这段代码按原样运行时,会产生正确的输出,即它会向"Hello“发出警报。但是当php代码写到最后时,它会提醒整个页面的html代码……
发布于 2018-01-29 00:12:09
PHP是内联处理的,除非它被包装在函数调用、类声明或控制语句中,因为它打算包含在html中。PHP = PHP超文本预处理器。重复一遍,http://php.net/manual/en/intro-whatis.php是内联处理的。服务器不会加载文件并只运行PHP或HTML,它会从文件的开头开始处理整个文件,除非有函数调用、类声明或其他控制语句。
当您的初始页面按编写的方式加载时,'btn1‘参数没有被发送,因此跳过if语句,服务器继续执行页面以返回文档的其余部分中的html。
当ajax调用到达页面时,它从顶部开始,这一次if语句为true,因为设置了btn1。die()调用告诉服务器停止浏览页面的其余部分,这样您就可以从echo语句中获得"btn1“。
如果删除die语句,您将获得"btn1“文本,然后从ajax调用中获得页面的其余部分。如果你把php代码块放在页面的末尾,你会看到整个页面,然后是"btn1“文本。如果将php时钟放在html中间,ajax调用将返回中间包含"btn1“页面,其中包含代码。
https://stackoverflow.com/questions/48488295
复制相似问题