我有一个jquery代码,用于获取保存在mysql中的用户名。
<script>
var currentID = null;
function fetch_data() {
$.ajax({
url: "select.php",
method: "POST",
success: function(data) {
$('#live_data').html(data);
//fetch_chat();
}
});
}
$(document).ready(function() {
fetch_data();
$(document).on('click', '.first_name', function() {
currentID = $(this).data("id1");
alert(currentID);
});
});
</script>
并且select.php看起来像这样:
<?php
session_start();
require("config.php");
$output = '';
$sql = "SELECT * FROM users where name!='$_SESSION[name]'";
$result = mysqli_query($con, $sql);
$output .= '
<div class="table-responsive">
<table class="table table-bordered">
<tr>
<th width="40%">First Name</th>
</tr>';
if(mysqli_num_rows($result) > 0)
{
while($row = mysqli_fetch_array($result))
{
$output .= '
<tr>
<td class="first_name" data-id1="'.$row['id'].'">'.$row["name"].'</td>
</tr>
';
}
}
else
{
$output .= '<tr>
<td colspan="4">Data not Found</td>
</tr>';
}
$output .= '</table>
</div>';
echo $output;
?>
问题在于我没有为点击的用户提供身份证明。代码是从表中获取数据,当点击任何名称时,它应该提醒他们各自的id。
答案 0 :(得分:0)
抱歉,我忘了$(document).on()
应该适用于动态元素。帖子的末尾附有旧答案。
请检查浏览器中的元素是否从服务器正确获取$row['id']
。或者您可以修改代码,以便<td>
显示$row['id']
而不是$row['name']
,以查看是否正确获取了id
。有可能id
字段在数据库中没有被命名为id
- 部分原因SELECT *
查询不好(自动完成和SQL错误赢了&t; t如果我们列出了错误的字段,请帮助我们!)。
如果它被正确获取但处理程序似乎无法正常工作,那么this answer可能会有所帮助。
<击>
对于quickfix,您应该将click处理程序块放在ajax调用的success:
回调中,即:
success: function(data) {
$('#live_data').html(data);
$(document).on('click', '.first_name', function() {
currentID = $(this).data("id1");
alert(currentID);
});
}
可能原因是fetch_data()
是ajax调用。
所以在填充$('#live_data')
之前(在ajax调用成功之后),您已经告诉文档附加了点击处理程序。 <td>
尚未出现!
但是,您可能不希望fetch_data()
与点击处理程序添加功能结合使用。在这种情况下,您可能需要附加then()
并在fetch_data()
函数中返回Promise。
希望这些链接有所帮助:
击>