![](/img/trans.png)
[英]How does position of parameters in a Query string affect the page?
[英]How exactly does PHP execution work and how does it's position in web page affect output?
我在搞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代碼...
除非將PHP封裝在函數調用,類聲明或控制語句中,否則它會進行內聯處理,因為它打算包含在html中。 PHP = PHP超文本預處理器。 http://php.net/manual/en/intro-whatis.php我重復一遍,PHP是內聯處理的。 服務器不加載文件,而僅運行PHP或HTML,它從文件的開頭開始並處理整個文件,除非存在函數調用,類聲明或其他控制語句。
當您的初始頁面按寫入方式加載時,尚未發布'btn1'參數,因此將跳過if語句,服務器將繼續執行該頁面以在文檔的其余部分返回html。
當您的Ajax調用到達頁面時,它從頂部開始,這一次,因為設置了btn1,所以if語句為true。 die()調用告訴服務器退出頁面的其余部分,以便從echo語句中獲取“ btn1”。
如果刪除die語句,則將獲得“ btn1”文本,然后從ajax調用中獲得頁面的其余部分。 如果將php塊放在頁面的末尾,則會得到整個頁面,然后是“ btn1”文本。 如果您將php時鍾拖入html的中間,則ajax調用將返回代碼中間的“ btn1”頁面。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.