2012-04-02 75 views
0

我試圖在運行一些php代碼後更新元素的內容。我意識到PHP首先被執行,但我想通過加載頁面,我可以找到元素?然而控制檯說找不到null的元素,所以我猜這個頁面在innerHTML代碼運行之前沒有加載。php返回innerHTML

任何任何想法?

else if(strlen($_POST['username']) < 6){ 
    header("Location: http://webpage/register.html"); 
    echo "document.getElementById('elemID').innerHTML = usename too short"; 
} 
+1

據我所知你設置標頭的位置後,你可以不回任何東西。 – k102 2012-04-02 10:16:44

回答

5

header()指示你的客戶去到新的位置,因此輸出任何後,將使作爲register.html的內容由服務器已經在不同的處理你的客戶沒有任何影響。

如果你可以改變register.html使用PHP替代,你可以通過

header("Location: http://webpage/register.php?msg=username%20too%20short"); 

然後在您的register.php

if(!empty($_GET['msg'])) echo $_GET['msg']; 
2

首先,你真的不應該有任何之後的邏輯您的標題位置重定向。在重定向之後放置「退出」或「死亡」是一種很好的做法,因爲您無法保證瀏覽器在重定向之前永遠不會看到下一行。事實上,你可以很好地保證它會更經常地看不到那個代碼。

如果你要重定向,把你的錯誤作爲參數傳遞給您的重定向網址和有邏輯存在,顯示像這樣的錯誤:

header("Location: http://webpage/register.php?error=username%20too%20short"); 

然後在你register.php(我給它改名從html的,所以你可以讀取錯誤參數),你可以參考像你的錯誤:

$error = $_GET['error']; 
if (!empty($error)) { 
    //write your error out in some markup or javascript... 
}