【发布时间】:2018-02-10 01:51:44
【问题描述】:
我正在尝试 .append() 从单选按钮中选择一个数据,但它会显示所有以前的响应结果。
我的 HTML:
$sql = "SELECT DISTINCT(name) FROM table1";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
$i = 1;
while($row = $result->fetch_assoc()) {
echo '<label>'.$row['name'].'</label>';
$sql2 = "SELECT * FROM table1 WHERE list = '".$row['list']."'";
$result2 = $conn->query($sql2);
if ($result2->num_rows > 0) {
while($row2 = $result2->fetch_assoc()) {
echo '<input name="group['.$i.']" class="id" type="radio" data-id="'.$row2['id'].'" />'.$row2['list'];
}
}
$sql2 = NULL;
$i++;
}
}
$sql = NULL;
我的 ajax 获取数据并追加:
$('.id').on('click', function(){
var id = $(this).data('id');
$.ajax ({
type: 'POST',
url: 'url-here',
data: { id : id },
success : function(data) {
$('#list').append(data);
}
});
});
对于PHP端如果有$_POST['id']则做mysql查询从表中过滤并返回结果。
if(isset($_POST['id'])){
$sql = "SELECT * FROM table1 WHERE id = '".$_POST['id']."'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo '<label>'.$row['name'].'</label>';
}
}
}
所以在我的 ajax 结果框 中发生了什么,它不断将 ajax 处理的先前数据与新数据一起附加。
EDIT:附加结果示例:
选中单选按钮的第一个结果:string 1
选中单选按钮的第二个结果:string 2
所以结果应该是:
string 1string 2
抱歉,我的解释有误。我的 ajax 框结果是这样的:
string 1-
string 2(来自另一个选定电台的新数据) -
string 2(新数据重复)
如果添加选择另一个收音机,它将变成这样:
string 1-
string 2 -
string 2 -
string 3(新数据) -
string 3(新数据复制) -
string 3(新数据复制) -
string 3(新数据复制)
我的 ajax 框结果:
<div id="list"></div>
【问题讨论】:
-
你能发布你的 php 吗?只是其中的一部分
-
@Max 检查我编辑的问题
-
如果再添加一个会变成string1 string1 string2 string1 string2 string3吗?
-
@Max 是的,你说得对
-
是的,因为您的所有输入都有 class="id" 所以 jquery 将获取所有值然后将其发送到 ajax