Php 在添加新数据之前,请清除以前的ajax响应数据

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

我试图.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;
对于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
  • 对不起,我的解释有误。我的ajax box结果如下所示:

  • 字符串1
  • 字符串2
    (来自另一个选定收音机的新数据)
  • 字符串2
    (新数据正在复制)
  • 如果添加并选择另一个收音机,它将变为:

  • 字符串1
  • 字符串2
  • 字符串2
  • 字符串3
    (新数据)
  • 字符串3
    (新数据复制)
  • 字符串3
    (新数据复制)
  • 字符串3
    (新数据复制)
  • 我的ajax框结果:


    我觉得你的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.
            }
        });
    });