Проверка PHP без обновления - PullRequest
0 голосов
/ 23 июня 2018

Я начальный программист.Я изучал PHP в течение короткого времени, в настоящее время я пишу приложение для социальных сетей для людей, которые любят книги.В течение нескольких дней регистрация пользователя является проблемой, форма помещается в «модал» и добавляется туда с помощью JS, проблема в том, что после отправки формы страница обновляется, поэтому я хотел бы спросить, можно лиСценарий кода, который будет возвращать результат проверки без обновления, и после правильной отправки данных в базу данных появилась информация о регистрации.

Это ссылка на код всех файлов: https://hastebin.com/pudisakowi.xml

Извините, если это глупый вопрос, но я не могу понять, как решить эту проблему.

Я пробовал с таким кодом

$(document).ready(function() {
const regiterUrl = "link to the register_page.php";

$("#registerForm").on("submit", function(event) {
    event.preventDefault();
    const formData = $(this).serialize();
    $("#login-text").fadeIn();
    $("#div-form").hide();
    $("#btn-register").attr("disabled", true);
    $.ajax({
        type: "post",
        url: regiterUrl,
        data: $("#registerForm").serialize(),
        success: function(response) {
            setTimeout(() => {
                console.log(response);
                $('#exampleModalCenter').modal('hide')
            }, 2000);
        },
        error: function(response) {
            alert("WYSTĄPIŁ BŁĄD");
        }
    });
});

});но это всегда дает успех и ничего не сохраняется в базе данных.

Буду благодарен за указания, что делать, или за указание, что не так в текущем коде.

Ответы [ 2 ]

0 голосов
/ 24 июня 2018

JQuery AJAX вызывает обратный вызов в случае возникновения ошибки при выполнении запроса. Успешный обратный вызов срабатывает, когда вы получаете законный ответ от сервера.

В этом случае вам следует переписать сценарий на стороне сервера для поддержки вызовов AJAX. И вам придется немного изменить код на стороне клиента. Пожалуйста, ознакомьтесь с примерами кода ниже.

  • Серверный код

if (isset($_POST)) {
    $response['success'] = false;

    //Set content type here, So the browser will be able to parse your response properly.
    header('Content-Type: application/json');

    //Data validation
    if ($any_error) {

        $response['errors'][] = 'Error Message';

    } elseif ($another_error ) {

        $response['errors'][] = 'Another Error Message';

    } else {

        //Your Form processing code
        //You may create a flag($form_processing) to verify success/failure
        if ($form_processing ) {
            $response['success'] = true;
        }
    }

    echo json_encode($response);
    exit;
}
  • Код на стороне клиента

    $(document).ready(function () {
    
        const regiterUrl = "link to the register_page.php";
    
        $("#registerForm").on("submit", function (event) {
    
            event.preventDefault();
            const formData = $(this).serialize();
            $("#login-text").fadeIn();
            $("#div-form").hide();
            $("#btn-register").attr("disabled", true);
    
            $.ajax({
                type: "post",
                url: regiterUrl,
                data: $("#registerForm").serialize(),
                datatype : "application/json",
                success: function (response) {
    
                    if( response.success == true ) {
                        //Success
                        $('#exampleModalCenter').modal('hide')
                    } else {
                        var errors = response.errors;
                        //Code for display errors
                    }
    
                },
                error: function (response) {
                    alert("WYSTĄPIŁ BŁĄD");
                }
            })
        })
    });
    
0 голосов
/ 24 июня 2018

Я быстро взглянул на это, и я думаю, что проблема обновления заключается в том, что type = "submit"

<button class="btn btn-info" type="submit" name="register">Zarejestruj</button>

Вы можете сделать это следующим образом:

<button class="btn btn-info register_btn"  name="register">Zarejestruj</button>

И чем:

$(".register_btn").on("click", function(event)... 

Кроме того, вам не нужен тег формы для всего материала, поэтому вы можете удалить строку тега формы, и если вы хотите передать данные в ajax, лучше написать их какdata: {param1: value, param2: value} вместо всей формы регистрации ...

Я не проверял это, но надеюсь, что это поможет вам.

ура

...