Функция preventDefault() работает неправильно

#javascript #php #html #ajax #session

Вопрос:

Сегодня я тестирую приложение, и у меня проблема с функцией preventDefault (), на моем компьютере она работает корректно, и у большинства пользователей не было никаких проблем, из 30 пользователей, которые ее тестируют, 2 сообщают мне ту же ошибку, они отправляют их в файл post формы входа в систему, на самом деле они правильно регистрируются, так как в массиве типа JSON я определяю, верен ли пароль или нет, чтобы сообщить его ajax, но он напрямую перенаправляет их на insert_user.php-файл и не принимает к сведению ни preentDefault (), ни предупреждение AJAX о фиксации и перенаправление туда, куда он их должен доставить.

Это файл, в котором хранится запрос на публикацию

     if (isset($_POST['login-value'])) {
    //die(json_encode($_POST));
    $correo = $_POST['login-email'];

    try {
        include_once 'funciones.php';
        $password = $_POST['login-pass'];
        $stmt = $conn->prepare("SELECT * FROM usuarios WHERE correo_usuario = ?");
        $stmt->bind_param("s", $correo);
        $stmt->execute();
        $stmt->bind_result($id_user, $nombre_user, $apellido_user, $correo_user, $password_user, $tipo, $status);
        if ($stmt->affected_rows) {
            $existe = $stmt->fetch();
            if ($existe) {
                if (password_verify($password, $password_user)) {
                    if ($status == 'activo') {
                        session_start();
                        $_SESSION['usuario'] = $correo_user;
                        $_SESSION['nombre'] = $nombre_user;
                        $_SESSION['id'] = $id_user;
                        $_SESSION['tipo'] = $tipo;
                        $respuesta = array(
                            'respuesta' => 'exito',
                            'usuario' => $nombre_user
                        );
                    } else {
                        $respuesta = array(
                            'respuesta' => 'error'
                        );
                    }
                } else {
                    $respuesta = array(
                        'respuesta' => 'error'
                    );
                }
            } else {
                $respuesta = array(
                    'respuesta' => 'error'
                );
            }
        }
        $stmt->close();
        $conn->close();
    } catch (Exception $th) {
        echo "error: " . $th->getMessage();
    }
    die(json_encode($respuesta));
}
 

А это файл js с AJAX и функцией предотвращения ()

     if (document.getElementById("login-user-form")) {
    document.getElementById("login-user-form").addEventListener('submit', function (e) {
        e.preventDefault();
        var datos = $(this).serializeArray();
        var correo = document.getElementById("login-email").value;
        var password = document.getElementById("login-pass").value;

        //Validaciones
        if (correo == "") {
            Swal.fire(
                'Error!',
                'Ingresa un correo válido',
                'error'
            )
        } else {
            if (password == "") {
                Swal.fire(
                    'Error!',
                    'Ingresa una contraseña válida',
                    'error'
                )
            } else {
                $.ajax({
                    type: $(this).attr('method'),
                    data: datos,
                    url: $(this).attr('action'),
                    dataType: 'json',
                    success: function (data) {
                        var resultado = data; 
                        if (resultado.respuesta =="exito") {
                            Swal.fire({
                                title: 'Correcto',
                                text: "Inicio de sesión correcto!",
                                icon: 'success',
                                showConfirmButton: false
                            })
                            setTimeout(function () {
                                window.location.href = 'index-app';
                            },1000);
                        } else {
                            Swal.fire(
                                'Error!',
                                'Usuario o contraseña incorrecto, intentalo de nuevo!',
                                'error'
                            )
                        }
                    }
                })
            }
        }
    });
}
 

Что меня немного озадачивает, так это то, почему у 94% пользователей у меня нет проблем, а у этих 2 есть.

Единственная константа заключается в том, что эти 2 пользователя не работают в браузере Google Chrome, я не знаю версию, так как они обычные пользователи, которые не тестируют ее никакими программистами.

Комментарии:

1. Ну, возможно, есть ошибка javascript, которая мешает добавить прослушиватель событий. Существует слишком много переменных, чтобы даже начать догадываться об этой проблеме.

2. Это может быть гоночное состояние или что-то в принципе. Вы пытались использовать Jquery addEventListener? Я не думаю, что внутренний код здесь уместен, поэтому, возможно, попробуйте объяснить, где установлен этот список событий или почему вам нужно выполнить эту проверку для document.getElementById(«форма входа пользователя»)

3. Если вы «отправляете» через AJAX, почему бы не удалить кнопку «Отправить» и не использовать обычный элемент? Затем вы можете прослушать событие щелчка по этому элементу и использовать AJAX для «отправки» данных этой формы

4. Обновление, приложение работает на том же устройстве, но с другой сетью, посмотрите, что произошло

Ответ №1:

вы можете попробовать : удалить «e.preventDefault();» в этом скрипте

Ответ №2:

Я уже решил эту проблему, в конце концов удаляю событие «preventdeafult ()» и перенаправляю его с заголовком из php, добавляя сообщение об ошибке по URL и получая