PHP, возвращающий innerHTML - PullRequest
       1

PHP, возвращающий innerHTML

0 голосов
/ 02 апреля 2012

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

У кого-нибудь есть идеи?

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

Ответы [ 2 ]

5 голосов
/ 02 апреля 2012

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 голосов
/ 02 апреля 2012

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

Если вы собираетесь перенаправить, укажите свою ошибку в качестве аргумента для 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...
}
...