Q:

Не идет перезагрузка страницы

Есть форма авторизации, которая отправляет post данные в файл обработчик, который в свою очередь обрабатывает данные и выводит в случае ошибки (не верный пароль или логин) сообщение пользователю, тут все отлично работает, НО в случае когда данные верны должна быть переадресация на главную страницу посредством header, на php, все прекрасно работает, через ajax переадресация не идет, только если самому перезапустить страницу. Как сделать чтоб срабатывала переадресация
Форма html...
<form action="/social/system/form.php" method="post" id="login_form">
            <table>
                <tr><td><i class="fa fa-user"></i></td><td><input type="text" name="login" id="login" /></td></tr>
                <tr><td><i class="fa fa-key"></i></td><td><input type="password" name="uspass" id="pass"/></td></tr>
            </table>
            <input type="submit" name="login_user" value="Войти" />
            <div id="auth_responce"></div>
        </form>

Php обработчик ...
if(isset($_POST['login_user'])) {
    //(если существует переменная login и эта переменная не пустая) или ...
    if ((!isset($_POST['login']) or empty($_POST['login'])) or (!isset($_POST['uspass']) or empty($_POST['uspass']))) {
        header("Location: /index.php");
    }   else {
        $params = array($_POST['login'], $_POST['uspass']);
        $query->Control($params);

        $query->AuthUser(); 
    }
}

Класс в который php обработчик отправляет данные на проверку и возвращает ответ...
function AuthUser () {

        try{
            $sql_auth = $this->db->prepare("select id, login, pass, status, lang from users where login = :login and pass = :pass");
            $sql_auth->execute(array(
                'login' => $this->newParamArray[0],
                'pass' => md5($this->newParamArray[1])
            ));

            $sql_auth->setFetchMode(PDO::FETCH_ASSOC);
            $user_date = $sql_auth->fetch();

            if($user_date['login'] == $this->newParamArray[0] and $user_date['pass'] == md5($this->newParamArray[1])) {
                  session_start();
     $_SESSION['us_id'] = $user_date['id'];
     $_SESSION['us_login'] = $user_date['login'];
     $_SESSION['us_status'] = $user_date['status'];
     $_SESSION['us_lang'] = $user_date['lang'];
     header("Location: /index.php");
            } else {
                echo "Простите, но такого пользователя нет или Вы ошиблись при вводе данных! <a href='/index.php'>Попробовать снова</a>";
            }
        } catch (PDOException $e) {
            echo "Произошла ошибка, смотри файл ошибок.";
            file_put_contents('system/PDOErrors.txt', $e->getMessage().'<br />', FILE_APPEND);              
        }
    }

И java скрипт с ajax который отправляет данные без перезагрузки...
$("#login_form").validate( {
    rules: {
        login: {
            required:true,
            rangelength: [5, 20]
        },
        uspass: {
            required: true
        }
    },

    messages: {
        login: {
            required: "Разве можно войти без логина?",
            rangelength: "ну и длиной он должен быть от 5 до 20 см"
        },
        uspass: {
            required: "Ладно логин, ну а пароль-то обязателен!"
        }
    },

    submitHandler: function (form) {
          $.ajax({
                type: "POST",
                url: "/social/system/form.php",
                data: $(form).serialize(),
                success: function (msg) {
                      $(form).html("<div id='message'>"+msg+"</div>");
                },
                //onSuccess() { location.href = index.php; }
          }); return false;
       }

});
Когда пароль или логин не совпадают ajax получает ответ об ошибке и показывает его пользователю, успешно работает. В случае же когда пользователь авторизован должна быть автоматическая перезагрузка на индексную страницу, без ajax работает все, а с ajax этоа перезагрузка не работает, как это исправить??? Спасибо

A:

Используйте location.href = url, перенаправит пользователя на нужную страничку.
В ajax запросе эту строку и выполняйте, если пользователь удачно авторизовался
...
onSuccess() {
    location.href = url; // ваш url
}
...

UPD
У вас ф-ция есть - success, вот там и проверяйте, что пришло с сервера - ошибка или все отлично. success выполнится, при ответе сервера, если статус 200 OK. Так что внесите правки в вашу ф-цию success.
submitHandler: function (form) {
      $.ajax({
           type: "POST",
           url: "/social/system/form.php",
           data: $(form).serialize(),
           success: function (msg) {
                 /** вот тут надо проверить что пришло с нашего сервера */
                 if(msg == 'success') location.href = url;
                 else $(form).html("<div id='message'>"+msg+"</div>");
           },
      }); 
      return false;
 }

А в php там где у вас начинается сессия, выводить echo success
if(
    $user_date['login'] == $this->newParamArray[0] and 
    $user_date['pass'] == md5($this->newParamArray[1])
) {
    session_start();
    $_SESSION['us_id'] = $user_date['id'];
    $_SESSION['us_login'] = $user_date['login'];
    $_SESSION['us_status'] = $user_date['status'];
    $_SESSION['us_lang'] = $user_date['lang'];
    echo "success";
    // header("Location: /index.php");
 }

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

