[我想使用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 变量(第二部分)