перенаправить страницу после jquery отправки с помощью функции header () на другую страницу с помощью php - PullRequest
0 голосов
/ 25 марта 2020

У меня есть эта форма входа

<form autocomplete="off" id="login_form">
    <div class="login-wrapper">
        <input required type="text" class="login-input" name="email" id="email" placeholder="email">
        <span class="fas fa-envelope mail_name-email"></span>
        <span class="err_output err_email"></span>
    </div>
    <div class="login-wrapper">
        <input required type="password" class="login-input" name="pwd" id="pwd" placeholder="password">
        <span class="fas fa-lock pwd_password"></span>
        <span class="err_output err_pwd"></span>
    </div>
    <input type="submit" class="login_btn" id="login_btn" name="login" value="log in">
</form>

представление обрабатывается с использованием jquery, например

$(document).ready(function() {
    $(document).on("submit", "#login_form", function() {
        Login();
        //send values to post
        const mail = document.getElementById("email").value;
        const pwd = document.getElementById("pwd").value;
        $.ajax({
            type: "POST",
            url: "./inc/login.php",
            data: {
              email: mail,
              password: pwd
            }
        });
        return false;
    });
});

, поэтому оно работает хорошо, но я хотел сделать всю проверку на сервер особенно в файле логина. php, включенном в URL в коде jquery, потому что введенные данные конфиденциальны, и я не могу просто перенаправить нас в javascript. Таким образом, даже до того, как я начал валидацию, я попытался перенаправить на другую страницу после отправки формы, но это не сработало, я попробовал header("Location: ../main.php") и echo "<script>location='../dashboard.php'</script>";, но на консоли все, что я увидел, было

jquery.js:9837 XHR finished loading: POST "http://localhost/My%20portfolio/admin/inc/login".

Я даже включил в свою форму атрибут действия, указывающий на страницу действия, но он не работает, это единственный способ, с помощью которого я могу продолжить проверку, иначе я застрял, я не знаю, что не так

1 Ответ

2 голосов
/ 25 марта 2020

Вы не можете использовать перенаправление в PHP при вызове ajax. Вам нужно что-то вернуть на страницу JS и перенаправить оттуда. Например, ваш PHP может вернуть json объект со статусом и URL-адресом для пересылки.

Вы можете вывести что-то вроде этого:

{
    "status" : "success",
    "url" : "http://www.example.com/url-to-redirect"
}

Или, если это не удастся

{
    "status" : "error",
    "message" : "Error message to show"
}

Затем в вашем javascript проверьте ответ и подтвердите статус

$.ajax({
  type: "POST",
  url: "./inc/login.php",
  data: {
    email: mail,
    password: pwd
  },
  dataType: "json"
}).done(function( data ) {
    if (data.status === "success") {
        window.location.href = data.url;
    }
    else if (data.status === "error") {
        alert(data.message);
    }
});

В вашем скрипте PHP вам нужно вывести что-то вроде массива.

Так что в вашей PHP проверке, если все проверено, вы можете просто сделать

echo json_encode(array('status' => 'success', 'url' => 'http://www.example.com/url-to-redirect'));

Но если это не удастся:

echo json_encode(array('status' => 'error', 'message' => 'Error message to show'));

Я предлагаю вам прочитать больше на json_encode и ajax звонки с PHP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...