2012-04-02 2 views
0

Im пытается обновить содержимое элемента после запуска некоторого PHP-кода. Я понимаю, что php выполняется первым, но я подумал, что, загрузив страницу, я мог бы найти элемент? Однако консоль говорит, что не может найти элемент с нулевым значением, поэтому я думаю, что страница не загружается до запуска внутреннего HTTML-кода.php return innerHTML

У вас есть идеи?

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

afaik Вы не можете отменить ничего после того, как вы установили заголовок с местоположением. – k102

ответ

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

Во-первых, вы не должны действительно иметь любую логику после ваш заголовок Переадресация местоположения. Хорошая практика - «выйти» или «умереть» после перенаправления, так как вы не можете гарантировать, что браузер увидит следующую строку перед перенаправлением. На самом деле вы вполне можете гарантировать, что он будет чаще видеть этот код.

Если вы собираетесь перенаправить, поставить свою ошибку в качестве аргумента переадресацией URL и иметь логику там, которая показывает ошибку, как это:

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... 
}