[我想使用foreach循环php中的ajax来获取被点击行的UID,但获取所有UID

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[我想使用foreach循环php中的ajax来获取被点击行的UID,但获取所有UID相关的知识,希望对你有一定的参考价值。

我正在尝试从锚标记获取UID,该锚标记是ajax中来自foreach循环php的锚标记的ID属性值。但是它一次只能工作一次,当我再次单击锚标记时,所有UID都将被吸收到ajax中!

[当我单击锚标记时,第一个显示的是Bootstrap 4模态,在模态中有一个带按钮的textarea标记,当我单击按钮时,我必须再次将uid和消息发送到action.php页面

这是我的action.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>';
    

这是feedback.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();
                    
                );
        
    );
  );
答案

这是我认为会发生的事情:由于您在另一个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中,然后查看其中的内容。

以上是关于[我想使用foreach循环php中的ajax来获取被点击行的UID,但获取所有UID的主要内容,如果未能解决你的问题,请参考以下文章

从 PHP foreach 循环中获取 Ajax 变量(第二部分)

jQuery Ajax $.post 传给php里面有foreach循环,最后拿到的数据循环只执行一次。怎么解决?

forEach 循环中的 AJAX 函数

foreach 循环内的 while 循环仅返回 1 行

foreach 循环中的两个数组

php foreach循环中的变量