2017-04-18 34 views
0

我對這個有點困惑。我正在嘗試在同一頁面上運行PHP時提交表單(請參閱下面的代碼)時顯示「Please wait ...」消息。它似乎運行PHP,然後重新加載頁面。當表單提交運行PHP腳本時顯示一條消息

我已經添加了睡眠(10)僅用於測試目的。

任何人都可以幫忙嗎?

感謝,

約翰

編輯:好吧,我現在明白了服務器和客戶端之間的區別。所以 - 我的問題是:如何在點擊提交和運行PHP之前顯示消息?

<?php 
if (isset($_POST['submit'])) { 
echo "Please wait..."; //display a loading message 
} 
?> 

<form action="test.php" method="post"> 
    <input type="test"></input> 
    <button name="submit" type="submit">SEND</button> 
</form> 

<?php 
if (isset($_POST['submit'])) { 
sleep(10); //run a script that takes a while 
} 
?> 
+0

我感覺你並沒有明白客戶端和服務器端代碼之間的區別:https://softwareengineering.stackexchange.com/questions/171203/what-are-the-differences-between-server-side客戶端編程 - 在寫入任何內容的時候,PHP已經打包並回家​​過夜了。 – CD001

+0

[爲什麼「有人可以幫助我?」不是一個真正的問題?](http://meta.stackoverflow.com/q/284236) –

+0

@ CD001 - 在閱讀您的評論之前閱讀一下。有沒有解決辦法? –

回答

2

您的PHP腳本將無法發送消息,然後重定向。您需要在等待頁面上使用JavaScript並重定向。如果你不想重定向,不知道爲什麼需要等待消息。

setInterval(function(){window.location.href="your_url" }, 10000); 

對於下載腳本,它需要設置內容類型爲PDF格式,這意味着你不能在此之前發送任何內容(頭部已經發送錯誤,否則)。

兩種可能的解決方案:
1.您應該在用戶點擊頁面上顯示「請稍候」,並在另一頁面中打開下載腳本。
2.下載頁面可以顯示html,然後使用iframe下載文件。 Using jQuery and iFrame to Download a File

+0

實際的PHP代碼使用HTML2PDF來生成一個需要幾秒鐘的PDF。我不想用一大段代碼複雜化這個帖子,所以只是將睡眠(10)包含在了演示目的中。 –

+0

這就是你所說的XY問題xyproblem.info/。你應該首先描述你試圖完成的目標。查看我的編輯。 – TurtleTread

相關問題