Как перейти на другую страницу после выполнения кода ajax?
Есть форма с регистрацией, оттуда данные с помощью ajax передаются в файл .php для проверки всяких условий(заполненность полей, корректный логин и т.д.). И там же в файле php, если проверки пройдены, добавляется запись в базу. После этого надо перейти на главную страницу. Вот примерный код файла .php:
<?php
if(empty($_POST['username'])){
echo 'Заполните поле "Имя пользователя"';
return;
}//и ещё много всяких проверок
$mysql -> query("INSERT INTO `clients` (`login`, `username`, `password`) VALUES('$login', '$username', '$password')");
$mysql -> close();
header("Location: ../index.php");
?>
последняя строка с header почему-то не выполняется. То есть пользователь ввёл данные, нажал "зарегистрироваться" и остался на той же странице. При этом в базе он появился. В форме установлен атрибут "onsubmit="return false"". Что делаю не так?
Ответы (1 шт):
Скорее всего у вас и php код и html находятся в одном файле. А для функции header в документации указано
Помните, что функцию
header()можно вызывать только если клиенту ещё не передавались данные. То есть она должна идти первой в выводе, перед её вызовом не должно быть никаких HTML-тегов, пустых строк и т.п.
Решением может быть парачка вещей:
- Перенести код php в отдельный файл. Где исключительно код php и ничего больше.
- Если есть перенаправление - может быть это сделать с помощью JS?
Кстати, вполне можно было бы увидеть предупреждения в ответе от сервера, если на сервере включить отображение ошибок