Я хочу получить UID выбранной строки, используя ajax от foreach l oop php, но получая все UID - PullRequest
0 голосов
/ 08 февраля 2020

Я пытаюсь получить UID из тега привязки, который является значением атрибута ID тега привязки из foreach l oop PHP в ajax. Но это работает только один раз, когда я снова щелкаю тег привязки, тогда все UID захватываются в ajax!

Когда я нажимаю тег привязки, то сначала я отображаю bootstrap 4 модальный и модальный тег textarea присутствует с кнопкой, и когда я нажимаю кнопку, я должен снова отправить uid и сообщение для действия. php page

Это мое действие. php код

if(isset($_POST['action']) && $_POST['action'] == 'fetchAllFeedback'){
    $feedback = $admin->fetchFeedback();
    $output = '';
    if($feedback){
        $output .= '<table class="table table-striped table-bordered text-center">
                                <thead>
                                    <tr>
                                        <th>FID</th>
                                        <th>UID</th>
                                        <th>User Name</th>
                                        <th>User E-Mail</th>
                                        <th>Subject</th>
                                        <th>Feedback</th>
                                        <th>Sent On</th>
                                        <th>Action</th>
                                    </tr>
                                </thead>
                                <tbody>';
    foreach ($feedback as $row) {
        $output .= '<tr>
                                    <td>'.$row['id'].'</td>
                                    <td>'.$row['uid'].'</td>
                                    <td>'.$row['name'].'</td>
                                    <td>'.$row['email'].'</td>
                                    <td>'.$row['subject'].'</td>
                                    <td>'.$row['feedback'].'</td>
                                    <td>'.$row['created_at'].'</td>
                                    <td>
                                        <a href="#" id="'.$row['uid'].'" title="Reply" class="text-primary feedbackReplyIcon" data-toggle="modal" data-target="#showReplyModal"><i class="fas fa-reply fa-lg"></i></a>
                                    </td>
                                </tr>';
    }
    $output .= '</tbody>
                            </table>';
    echo $output;
    }
    else{
        echo '<h3 class="text-center text-secondary">:( No any feedback written yet!</h3>';
    }
}

Это обратная связь. php ajax код

$("body").on("click", ".feedbackReplyIcon", function(e){
    let uid = $(this).attr('id');
    $("#feedback-reply-btn").click(function(e){
        if($("#feedback-reply-form")[0].checkValidity()){
            let message = $("#message").val();
            e.preventDefault();
            $("#feedback-reply-btn").val('Please Wait...');
            $.ajax({
                    url: 'assets/php/admin-action.php',
                    method: 'post',
                    data: {uid:uid,message:message},
                    success:function(response){
                        console.log(response);
                        $("#feedback-reply-btn").val('Send Reply');
                        $("#showReplyModal").modal('hide');
                        $("#feedback-reply-form")[0].reset();
                    }
                });
        }
    });
  });

1 Ответ

0 голосов
/ 08 февраля 2020

Вот что, по моему мнению, происходит: поскольку вы объявляете метод click внутри другого метода click, переменная uid становится пустой после первого использования. Обычно плохая практика складывать подобные события друг в друге. Попробуйте изменить javascript на следующее:

        var uid;
        $("body").on("click", ".feedbackReplyIcon", function(e){
            uid = $(this).attr('id');
        });

        $("#feedback-reply-btn").click(function(e){
            if($("#feedback-reply-form")[0].checkValidity()){
                let message = $("#message").val();
                e.preventDefault();
                $("#feedback-reply-btn").val('Please Wait...');
                $.ajax({
                    url: 'assets/php/admin-action.php',
                    method: 'post',
                    data: {uid:uid,message:message},
                    success:function(response){
                        console.log(response);
                        $("#feedback-reply-btn").val('Send Reply');
                        $("#showReplyModal").modal('hide');
                        $("#feedback-reply-form")[0].reset();
                    }
                });
            }
        });

Возможно, это все еще не оптимально, мне немного неясно, как устроены ваши элементы, и я не могу это проверить. Дайте мне знать, что происходит - если это все еще не работает, попробуйте сбросить переменные в admin-action. php, и посмотрите, что там.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...