jQuery код работает только в редакторе браузера, но не в теге скрипта - PullRequest
1 голос
/ 14 марта 2020

Мне было трудно выяснить, почему мой код Jquery не работает при вставке в тег <script></script>, но работает при выполнении в редакторе моего браузера. Приведенный ниже код не содержит ошибок и работает нормально только в том случае, если скрипт Jquery выполняется в редакторе моего браузера, но не при использовании в теге скрипта.

<!DOCTYPE html>
<head>
    <title>Delete data</title>
    <link href="bootstrap.min.css" rel="stylesheet">
</head>
<body>
    <div><font color="#000"><b>Aaron</b></font></b>
    <div>Hello World!</div>
    <div class="d-flex justify-content-start comment_buts" style="font-weight: bold; font-size: 13px;">
        <span class="mr-3"><a href="#"><font color="red">Like</font></a></span>
        <span class="mr-3 comment_reply" id="mention_aaron">Reply</span>
        <span class="mr-3 comment_del_but" id="del_15841889572020Aaroncmidb1">Delete</span>
    </div>
    <script src="jquery.min.js"></script>
    <script src="bootstrap.min.js"></script>
    <script type="text/javascript">
        var post_id = "b71ShOv5imgidb1"; // $_GET['post_id'];
    </script>
    <script src="delete.js"></script>
</body>
</html>

delete. js

$(document).ready(function(){
    $('.comment_del_but').click(function(){
        var el = this;
        var id = this.id;
        var splitid = id.split("_");

        // id
        var deleteid = splitid[1];

        $.ajax({
            url: 'delete.php?p_id='+post_id,
            type: 'POST',
            data: { id:deleteid },
            success: function(response) {
                if(response == 1) {
                    $(el).closest('.comment_to_del').fadeOut(500, function(){
                        $(this).remove();
                    });
                } else {
                    alert('Ops! Something went wrong, please try again');
                }
            }
        });
    });
});

удалить. php

<?php 
    // connect to db
    include 'db.php';

    if (isset($_GET['p_id']) && isset($_POST['id'])) {
        $post_id = $_GET['p_id']; // post id
        $comment_id = $_POST['id']; // comment id

        // select comment
        $select_comment = "SELECT comment FROM users_post_comments WHERE comment_id = ? AND for_post_id = ?";
        if($stmt = mysqli_prepare($db, $select_comment)) {
            mysqli_stmt_bind_param($stmt, "ss", $comment_id, $post_id);
            mysqli_stmt_execute($stmt);
            while (mysqli_stmt_fetch($stmt)) {
                // fetch results
            }

            // if comment exist
            if (mysqli_stmt_num_rows($stmt) > 0) {
                $delete_comment = "DELETE FROM users_post_comments WHERE comment_id = ? AND for_post_id = ?";
                $stmt = mysqli_prepare($db, $delete_comment);
                mysqli_stmt_bind_param($stmt, "ss", $comment_id, $post_id);
                mysqli_stmt_execute($stmt);
                echo 1;
                // echo "deleted successful";
            } else {
                echo 0;
            }
        }
        // close statement
        mysqli_stmt_close($stmt);
    }
    // close db connection
    mysqli_close($db);
?>

1 Ответ

1 голос
/ 14 марта 2020

Хорошо! Я только что заменил

$(document).ready(function(){
    $('.comment_del_but').click(function(){

на

$(function(){
    $(document).on('click','.comment_del_but',function(){

, и мой код теперь работает нормально. Я думаю, это может быть из-за версии JQuery, которую я использую, может быть. В любом случае, спасибо за вашу поддержку.

...