簡體   English   中英

PHP執行是如何工作的,它在網頁中的位置如何影響輸出?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM