Кнопка Отправить периодически не отправляя информацию формы - PullRequest
0 голосов
/ 19 ноября 2018

Итак, у меня есть эта форма для добавления комментариев под сообщением.Здесь используются следующие методы: MYSQL (содержит отправленные данные формы в базе данных), PHP (связь с базой данных) и JavaScript, в частности AJAX (для подключения кнопки отправки и обработки событий).Ввод вашего комментария в форму и нажатие кнопки «Отправить» должно вывести комментарий на экран.Когда я нажимаю «Отправить», он ничего не печатает.Затем, когда я набираю другой комментарий и нажимаю еще раз, он печатает содержимое этого комментария.В других случаях он успешно печатает содержимое комментария, а не отправляет сообщение.Я проверил это в элементе inspect и в журнале консоли, когда он пропускает, он по-прежнему отправляет пустые теги <p> с классом комментария, который должен быть отправлен.

Страница PHPдля формы комментария:

<head>
<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
<script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.3.1.min.js"></script>
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css">
<link rel="stylesheet" href="Forums.css">
</head>
<body>
    <?php
    $result = mysqli_query($link, $displayPost); ?>
    <?php $row = mysqli_fetch_assoc($result);?>
    <p> <?php echo  $row["title"];?> </p>
    <br>
    <p> <?php echo $row["body"];?> </p>
    <form action="<?php echo $url ?>" method="post" id="form-group">
        <div class="forum col-md-12">
            <textarea type="text" style="overflow: auto; resize: none;" name="body" class="txtBody"></textarea>
            <input type="submit" name="submit" class="btnCreate" style="margin-bottom: 4px;">
        </div>
    </form>
</body>
<script>
    function refreshData() {
        $.ajax({
            type:'GET',
            url: 'getcomments.php?id=<?php echo $id ?>',
            dataType: 'html',
            success: function(result){
                console.log(result);
                $('#comments').html(result);
            }
        });    
    }
    $(document).ready(function () {
        refreshData();
        $("#form-group").submit(function (event) {
            var $form = $(this);
            console.log($form.attr('action'));
            var serializedData = $form.serialize();
            $.ajax({
                url: $form.attr('action'),
                type: 'POST',
                data: serializedData
            });
            refreshData();
            event.preventDefault();
        });
    });
</script>
<div id="comments"></div>

Страница PHP для получения ранее отправленных комментариев и их печати на экране

<?php
$link = mysqli_connect("localhost", "root", "WassPord64", "forum");
$id = $_GET["id"];
$displayPost = "SELECT * FROM comments WHERE post_id='$id'";
$link->query($displayPost);
$result = mysqli_query($link, $displayPost);
if (mysqli_num_rows($result) > 0) :
    // output data of each row
    while($row = mysqli_fetch_assoc($result)) :
        $row = mysqli_fetch_assoc($result);?>
        <p class="postBody"><?php echo $row['body'];?></p>
    <?php endwhile; ?>
<?php endif; ?>

1 Ответ

0 голосов
/ 19 ноября 2018

Вы звоните refreshData(), когда Ajax не закончен. Вы можете сделать функцию обратного вызова, используя $ .ajax.success

Попробуйте это:

$(document).ready(function () {
    refreshData();
    $("#form-group").submit(function (event) {
        var $form = $(this);
        console.log($form.attr('action'));
        var serializedData = $form.serialize();
        $.ajax({
            url: $form.attr('action'),
            type: 'POST',
            data: serializedData,
            success: function(){
              refreshData();
            }
        });
        event.preventDefault();
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...