Jquery / ajax не захватывает событие отправки - PullRequest
0 голосов
/ 05 апреля 2020

Я написал два куска кода, чтобы узнать, как jQuery и ajax работают вместе. Первый сценарий передает данные формы второму сценарию для дальнейшей обработки, а затем возвращает данные обратно вызывающему сценарию. Сценарий смог захватить и передать электронную почту, используя isset(_POST["email"]. Однако он не смог захватить событие отправки (isset(_POST["email"] не будет захватывать отправку).

Я понимаю, что излишне пытаться перехватить событие отправки. Поскольку только при нажатии кнопки подтверждения будет вызван второй скрипт. Интересно, если это причина, по которой jQuery / ajax не поддерживает захват события отправки.

1-й сценарий:

            <html>
            <head>
              <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
              <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
            </head>
            <body>
            <form id="form" method="post">
                <span id="error" name="error"></span>
                <div><input type="text" id="email" name="email"></div>
                <div><input type="submit" id="submit" name="submit" value="submit"></div>
            </form>
            </body>
            </html>
            <script>
            $(document).ready(function(){
                $('#form').on('submit', function(event){
                    event.preventDefault();
                    $.ajax({
                        url:"test4.php",
                        method:"POST",
                        data:$(this).serialize(),
                        dataType:"json",
                        beforeSend:function()
                        {
                            $('#submit').attr('disabled','disabled');
                        },
                        success:function(data)
                        {
                            if(data.success) {
                                window.location = "http://localhost/index.php";
                            }
                            else
                            {
                                $('#submit').attr('disabled', false);
                                $('#error').text('error');
                            }
                        }
                    })
                });
            });
            </script>

2-й сценарий:

            <?php
            if(isset($_POST["submit"]))
            {
                    $data = array(
                    'success'  => true
                    );
            }
            echo json_encode($data);
            ?>

Ответы [ 2 ]

0 голосов
/ 06 апреля 2020

только что нашел длинную дискуссию на эту тему c. По-видимому, кнопка отправки должна быть сериализована вручную.

https://github.com/jquery/jquery/issues/2321

0 голосов
/ 05 апреля 2020

Просто измените событие на:

$('#submit').click((event)=>{
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...