Как перейти на другую страницу после выполнения кода 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-тегов, пустых строк и т.п.

Решением может быть парачка вещей:

  1. Перенести код php в отдельный файл. Где исключительно код php и ничего больше.
  2. Если есть перенаправление - может быть это сделать с помощью JS?

Кстати, вполне можно было бы увидеть предупреждения в ответе от сервера, если на сервере включить отображение ошибок

→ Ссылка