Почему мой эхо-код json_encode ($ data) отображает что-то на моих страницах и как этого избежать (проверка формы ajax / php) - PullRequest
0 голосов
/ 10 апреля 2020

РЕДАКТИРОВАТЬ: я решил свою проблему, потому что у меня забыл оператор "требовать" в коде. Извините, что не знал об этом раньше, и спасибо за ваше время.

Я новичок в веб-разработке, и второй раз я использую AJAX на сайте.

Это просто проверка формы контакта с использованием ajax и php проверки на стороне клиента. Вот проблема: мой код на самом деле работает, как и ожидалось, для части проверки, так как все работает нормально, но я не понимаю, что я пропускаю или делаю неправильно, потому что я получаю строку поверх моего сайта (на каждой странице только страница контактов между прочим), которую я не хочу, очевидно,

Я понимаю, что это происходит из моего php кода, фактически повторяющего мой json_encode ($ data), но я не понимаю, почему и как это сделать, чтобы избежать этого

Вот мой код:

JS:

        let resultMessage = $('#resultMessage')
        let form = $('#contact_form')

        form.submit(function(e){
            $('span.error').empty()
            e.preventDefault()

            $.ajax({


                type: "POST",
                url: form.attr("action"),
                data: form.serialize(),
                dataType: 'json',

                success: function(response) {
                    if(response.success == true){
                        resultMessage.html('Message sent succesfully')
                    } else {
                        resultMessage.html('Fail')
                        if (response.errors.nom != null) {
                            $('#name_error').html(response.errors.nom);
                        }
                        if (response.errors.email != null) {
                            $('#email_error').html(response.errors.email);
                        }
                        if (response.errors.message != null) {
                            $('#message_error').html(response.errors.message);
                        }
                    }
                },
                error: function(){
                    console.log('error')
                }
            })
        })

PHP

$success = false;
$errors = [];


    // inputs validation
    $errors = textInputValidation($errors, $name, 'name', 2, 50);
    $errors = emailValidation($errors, $email, 'email');
    $errors = textInputValidation($errors, $message, 'message', 10, 5000);

    // if there is no error =>
    if (count($errors) == 0) {

        // code actualy sending the message 

        $success = true;
    } 

    $data = array(
        'errors' => $errors,
        'success' => $success
    );

    header('Content-type:application/json');
    echo json_encode($data);

Так что этот код работает, но проблема в том, что я получаю эту строку поверх моего сайта

{"errors":{"name":"please fill this field","email":"please fill this field","message":"please fill this field"},"success":false}

Она есть на каждой странице, а не только на странице контактов, и она даже не меняется, когда проверка в порядке, и нет ошибок в форма или где-нибудь еще.

Возможно, мне не хватает чего-то очень базового c, извините за это.

Спасибо за вашу помощь

...