Php 在添加新数据之前,请清除以前的ajax响应数据
我试图.append()从单选按钮中选择一个数据,但它显示所有以前的响应结果 我的HTML:Php 在添加新数据之前,请清除以前的ajax响应数据,php,ajax,append,Php,Ajax,Append,我试图.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
$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;
对于PHP端,如果有$\u 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>';
}
}
}
if(isset($\u POST['id'])){
$sql=“从表1中选择*,其中id=”$\u POST['id']。”;
$result=$conn->query($sql);
如果($result->num_rows>0){
而($row=$result->fetch_assoc()){
回显'.$row['name'].';
}
}
}
因此,在我的ajax结果框中发生的情况是,它不断地将ajax处理过的先前数据与新数据一起追加
编辑:追加结果示例:
所选单选按钮的第一个结果:字符串1
所选单选按钮的第二个结果:字符串2
因此,结果应该是:
字符串1
字符串2
字符串1
字符串2
(来自另一个选定收音机的新数据)字符串2
(新数据正在复制)字符串1
字符串2
字符串2
字符串3
(新数据)字符串3
(新数据复制)字符串3
(新数据复制)字符串3
(新数据复制)
我觉得你的jQuery看起来不错。因此,SQL查询可能有多行。这可能意味着您的id
值实际上返回了两行。它们包括第一行和第二行。在标签和输入中添加任何类
echo '<label class="ajax">'....
....
echo '<input class="ajax" ...
....
或者更好
$('#list .ajax').remove();
$('#list').append(data);
更新
或者简单地将div
添加到ajax响应中
$('#list').append("<div class='ajax'>"+data+"</div>");
您应该从元素中删除以前附加的事件处理程序,以避免多次单击
$('.id').on('click', function(){
var id = $(this).data('id');
$.ajax ({
type: 'POST',
url: 'url-here',
data: { id : id },
success : function(data) {
$('#list').append(data);
$('.id').off('click'); // remove a previously-attached event handler from the element.
}
});
});
你好,谢谢你的回答,但这不是我想要的
.html
将替换结果框中的整个结果
,但我想附加结果。我想让它变成这样,从你的描述听起来,它在做你想做的事情。如果单击.id
它将在框中放置一个结果,如果再次单击它,它将在上一个结果旁边放置下一个结果。什么不适合你?你能更详细地描述一下这个问题吗?我已经改进了我的问题。很抱歉,请查问,你现在也可以发布html了吗?你说的是哪种html?结果框?你可以发布你的php吗?只是一部分this@Max检查我编辑的问题如果您添加另一个问题,它会成为string1 string1 string2 string1 string2 string3吗?@Max Yes您答对了Yes,因为您的所有输入都具有class=“id”因此jquery将获得所有值,然后将其发送到ajax@LinundusOndu:你能做一个简单的小提琴吗?它正在工作,功能就像.html
。我不想替换为新数据,但附加它。html
将替换内部内容,您需要按照我说的做,或者让js fiddle与您的功能类似
$('#list').append("<div class='ajax'>"+data+"</div>");
$('#list .ajax').remove();
$('#list').append(data);
$('.id').on('click', function(){
var id = $(this).data('id');
$.ajax ({
type: 'POST',
url: 'url-here',
data: { id : id },
success : function(data) {
$('#list').append(data);
$('.id').off('click'); // remove a previously-attached event handler from the element.
}
});
});