Возникли проблемы при получении переменной для передачи в jquery - PullRequest
0 голосов
/ 15 января 2019

У меня есть функция сохранения на моем веб-сайте, чтобы пользователь мог сохранить элемент. При первом щелчке он обновляется и сохраняет нормально, потому что он прошел через файл PHP, но у меня возникли проблемы с получением ajax для обновления ссылки при повторном нажатии во второй раз, поскольку ссылка создается в коде jquery для обновления его с помощью AJAX. (Передача правильных идентификаторов является проблемой). Оно должно обновить сердце на красный или зеленый и добавить или удалить слово «Сохранить». Мне нужно обновить правильный идентификатор на втором, третьем и т. Д. Клике. Вот код jquery: У меня есть 2 функции. saveLink и deleteLink.

Это мой файл JavaScript:

$(document).on("click", '.del-button', function () {
var savId = $(this).attr('data-sav-id');
deleteLink(savId);
});

$(document).on("click", '.sav-button', function () {
    var delId = $(this).attr('data-del-id');
    saveLink(delId);
});

function saveLink( saveID ){

var id = saveID;

$.ajax({
    method: "POST",
    url: "saveLink.php",
    dataType: "json",
    data:  { 

        'id' : id,

    },

    success: function(returnID){
        var returnID = $.trim(returnID);
        if(returnID){           

            $('#showSaved' + id).html('<span id="removeSaved('+ id +');"><a href="javascript:void();" class="del-button pull-right"' + 'data-sav-id='+ returnID +'"><i class="fa fa-heart" style="color:#d52917;"></i></a></span>');    

        }
    }
});
}

function deleteLink( deleteID ){

var deletedID = deleteID;

$.ajax({
    method: "POST",
    url: "deleteLink.php",
    dataType: "json",
    data:  { 

        'deletedID' : deletedID,

    },

    success: function(deleteIDFunc){
        var deleteIDFunc = $.trim(deleteIDFunc);
        if(deleteIDFunc){   

            $('#removeSaved' + deletedID).html('<span id="showSaved('+ deletedID +');"><a href="javascript:void();" class="sav-button pull-"' + 'data-del-id='+ deleteIDFunc + '">Save <i class="fa fa-heart"></i></a></span>');

        }
        else {
            alert('Your saved post was not removed. Please try again');
        }
    }
});
}

Вот код PHP, который обрабатывает начальный клик:

$query = "SELECT        
        count(replies.reply_topic) as replyCount,
        topics.topic_id,
        topics.topic_subject,
        topics.topic_date,
        topics.topic_cat,
        topics.topic_creator,
        topics.topic_likes,
        users.user_id,
        users.username,
        profile.profile_id,
        profile.profile_pictureMain,
        profile.profile_users,
        savelink.saveLink_id,
        savelink.saveUser_id,
        savelink.link_id
        FROM
            topics
        LEFT JOIN
            users
        ON
            topics.topic_creator = users.user_id
        LEFT JOIN
            replies
        ON
            replies.reply_topic = topics.topic_id
        LEFT JOIN
            profile
        ON
            profile.profile_users = users.user_id
        LEFT JOIN
            savelink
        ON
            savelink.link_id = topics.topic_id
        GROUP BY
            topics.topic_id
        ORDER BY
            topics.topic_date DESC 
        LIMIT ?, ?
        ";

$stmt = $conn->prepare($query);
$stmt->bindParam(1, $start, PDO::PARAM_INT);
$stmt->bindParam(2, $limit, PDO::PARAM_INT);
$stmt->execute();
$returnAmt = $stmt->fetchAll();
if($stmt->rowCount() > 0){
$returnValues = "";
foreach($returnAmt as $row){
    $returnValues .=
if(isset($_SESSION['user_session']) && $row['saveUser_id'] == $_SESSION['user_session']){
        $returnValues .= '<span id="removeSaved'.$row['saveLink_id'].'"><a href="javascript:void();" class="del-button pull-right" data-sav-id="'.$row['saveLink_id'].'"><i class="fa fa-heart" style="color:#d52917;"></i></a></span>';
    }
    else if(isset($_SESSION['user_session'])){
        $returnValues .= '<span id="showSaved'.$row['topic_id'].'"><a href="javascript:void();" class="sav-button pull-right" data-del-id="'.$row['topic_id'].'">Save <i class="fa fa-heart"></i></a></span>';
    }
    else{
        $returnValues .= '<a href="javascript:void();" class="pull-right" data-toggle="modal" data-target="#loginModal" >Save <i class="fa fa-heart"></i></a>';
    }

    $returnValues .= '</div></div></span></div>
}
echo $returnValues;

Вот HTML-код для отображения результатов:

<div role="tabpanel" class="tab-pane active" id="Top">

    <div id="rowDisplayResults">

        <!--Display results here-->

    </div>

</div>

Я бы хотел, чтобы функция сохранения была похожа. Красное сердце, когда оно спасено, и зеленое, когда нет.

enter image description here

Должен ли я добавить еще одну переменную в функции сохранения и удаления ссылок, чтобы передавать правильные идентификаторы после второго щелчка? Любая помощь приветствуется. спасибо.

1 Ответ

0 голосов
/ 15 января 2019

Измените свой код следующим образом. Также измените HTML для этой логики

 $(document).on("click", '.del-button', function () {
            var savId = $(this).attr('data-sav-id');
            deleteLink(savId);
        });

        $(document).on("click", '.sav-button', function () {
            var delId = $(this).attr('data-del-id');
            saveLink(delId);
        });

        function saveLink( saveID ){
            var id = saveID;
            $.ajax({
                method: "POST",
                url: "saveLink.php",
                dataType: "json",
                data:  { 
                    'id' : id,
                },
                success: function(returnID){
                    var returnID = $.trim(returnID);
                    if(returnID){           

                        $('#showSaved' + id).html('<span id="removeSaved('+ id +');"><a href="javascript:void();" class="del-button pull-right"'+
                            ' data-sav-id=' + returnID + '"><i class="fa fa-heart" style="color:#d52917;"></i></a></span>');
                        //onclick="deleteLink('+ returnID +');
                    }
                }
            });
        }

        function deleteLink(deleteID) {
            var deletedID = deleteID;
            $.ajax({
                method: "POST",
                url: "deleteLink.php",
                dataType: "json",
                data: {
                    'deletedID': deletedID,
                },
                success: function (deleteIDFunc) {
                    var deleteIDFunc = $.trim(deleteIDFunc);
                    if (deleteIDFunc) {
                        $('#removeSaved' + deletedID).html('<span id="showSaved(' + deletedID + ');"><a href="javascript:void();" '+
                            'class="pull-right sav-button" data-del-id=' + deleteIDFunc + '">Save <i class="fa fa-heart"></i></a></span>');
                    }
                        //onclick="saveLink(' + deleteIDFunc + ');
                    else {
                        alert('Your saved post was not removed. Please try again');
                    }
                }
            });
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...