@Shinguru

Неправильно работает alert в jquery?

Привет.
Не могу понять в чем проблема.
вот моя форма:
<form id="loginform" class="form">
<div class="form-group">
<label for="login" class="cols-sm-2 control-label required">Login</label>
<div class="cols-sm-10">
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-users fa" aria-hidden="true"></i></span>
<input type="text" class="form-control" name="login" id="login" placeholder="Введите ваш login" required />
</div>
</div>
</div>

<div class="form-group">
<label for="password" class="cols-sm-2 control-label required">Password</label>
<div class="cols-sm-10">
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-lock fa-lg" aria-hidden="true"></i></span>
<input type="password" class="form-control" name="password" id="password" placeholder="Введите ваш password" required />
</div>
</div>
</div>
<div class="form-group ">
<button type="submit" class="btn btn-primary btn-lg btn-block login-button" id="do_login">войти</button>
</div>
</form>


Вот мой скрипт:
$('#loginform').submit(function(){
    var data= $(this).serialize();
    $.ajax({
        type: "POST",
        url:"php/login.php",
        data: data,
        success: function(data){
            if (data=='OK'){
                window.location.href= "#страничка";
            } else {                
             window.alert(data);
            };
        }
    })
});

суть проста, в php файле я ищу пользователя по БД, если нахожу, то возвращается ответ "ОК" и скрипт перекидывает меня на целевую страничку с контентом доступном только для залогиненных пользователей. Если же такого пользователя в базе нет, то возвращается ответ "пользователь не найден" и скрипт вызывает alert с текстом ошибки.

В моем же случае, при логине, если пользователь найден, вызывается alert с текстом "OK" и по нажатию на подтверждение действия, перекидывает на целевую страничку, но данные на ней не обновлены, нужно нажать вручную еще раз обновить, только тогда контент для пользователей появляется. Как избежать alert в случае удачного логина пользователя и мгновенной переадресации на целевую страничку с актуальными данными?
  • Вопрос задан
  • 147 просмотров
Пригласить эксперта
Ответы на вопрос 2
@forkhammer
Fullstack-разработчик (Django, Angular)
В конце обработчика формы надо вызвать return false, чтобы отключить стандартное поведение формы
$('#loginform').submit(function(){
    ...
    return false;
});
Ответ написан
ThunderCat
@ThunderCat Куратор тега JavaScript
{PHP, MySql, HTML, JS, CSS} developer
во первых
$('#loginform').submit(function(e){
  e.preventDefault();
...

иначе у вас тупо субмитится форма, никакого "перенаправления" не происходит.

во вторых укажите в возвращаемом типе данных конкретный тип ожидаемого контента, например json. И соответственно отправляемые с сервера ответы оборачивайте в json_encode(), а то ваш скрипт не понимает что за строка приходит с сервера и переходит к строке else { window.alert(data);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы