更新多个数据

gg58donl  于 2021-06-25  发布在  Mysql
关注(0)|答案(4)|浏览(392)

如何使用ajax更新多个数据?
例子:

编号:1,2
姓名:杰克,约翰
它只对id 1起作用,当我试图编辑id 2的名称时它不起作用。
我尝试过这个代码,但失败了。
html/php格式:

...

    while($row=mysqli_fetch_array($query)){
    echo'    
    <form class="btn-group">
        <input type="text" class="form-control" name="id_user" id="id_user" data-user="'.$row['id'].'" value="'.$row['id'].'">
        <input type="text" class="form-control" name="id_status" id="id_status" data-status="'.$row['id'].'" value="'.$row['id'].'">
        <button type="submit" id="likestatus" class="btn btn-primary btn-outline btn-xs"><i class="fas fa-thumbs-up"></i></button>
        </form>
    ';
    }

AJAX :

$(document).ready(function(){
    $("#likestatus").click(function(){
    var id_user=$("#id_user").data("user");
    var id_status=$("#id_status").data("status");
        $.ajax({
        url:'status/like-status.php',
        method:'POST',
        data:{
            id_user:id_user,
            id_status:id_status
            },
            success:function(response){
            alert(response);
            }
        });
    });
});
r7knjye2

r7knjye21#

你多次使用身份证。因此你对 var id_user=$("#id_user").data("user"); 始终查找页面上的第一个输入字段。你应该避免在一个页面上多次使用同一个id(参见这个问题)。
您可以订阅jquery submit 事件,然后搜索该窗体中的输入字段,以正确提取 id_user 以及 status_user 价值观。为此,必须向 <form> 元素。为了找到表单,我建议添加一个css类,比如 like-status-form .

$(document).ready(function(){
    // We're attaching a submit-event listener to every element with the css class "like-status-form"
    $(".like-status-form").submit(function(event){
       // Form get's submitted
       // Prevent that the Browser reloads the page
       event.preventDefault();

       // Extract the user id and status from the form element (=== $(this))
       var id_user = $(this).find('[name="id_user"]').data('user');
       var id_status = $(this).find('[name="id_status"]').data('status');

       // TODO Perform AJAX Call here
    });
});

要检测表单元素,可以使用jquery属性equals选择器。
找到一个工作的例子https://jsfiddle.net/07yzf8k1/

k4emjkb1

k4emjkb12#

代码的问题是id应该是唯一的,但是在循环中创建了具有相同id的元素。
使用 this 在事件处理程序中查找已单击的按钮的同级-closest返回form类型的父级。

$(document).ready(function(){
    $(".btn-primary").click(function(){
        var $form = $(this).closest('form');
        var id_user=$form.find('[name="id_user"]').data("user");
        var id_status=$form.find('[name="id_status"]').data("status");
            $.ajax({
            url:'status/like-status.php',
            method:'POST',
            data:{
                id_user:id_user,
                id_status:id_status
                },
                success:function(response){
                alert(response);
                }
            });
    });
});

您可能希望使用自己的类而不是 .btn-primary 因为这会影响页面上的所有按钮。

4nkexdtk

4nkexdtk3#

让你的id独一无二,让他们充满活力

<?php

 $counter = 0;

 while($row=mysqli_fetch_array($query)){
    $counter++;

    echo'    
    <form class="btn-group">
        <input type="text" class="form-control" id="userid_$counter" data-user="'.$ruser['id'].'" value="'.$ruser['id'].'">
        <input type="text" class="form-control" name="id_status" id="status_$counter" data-status="'.$rtimeline['id'].'" value="'.$rtimeline['id'].'">
        <button type="submit" id="likestatus_$counter" class="btn btn-primary btn-outline btn-xs"><i class="fas fa-thumbs-up"></i></button>
        </form>
    ';
    }
?>

然后

<script type="text/javascript">
$(document).ready(function(){
    $('[id^="likestatus_"]').on('click',function(){
         var index = $(this).attr('id').split("_")[1];
    var id_user=$("#user_"+index).data("user");
    var id_status=$("#status_"+index).data("status");
        $.ajax({
        url:'status/like-status.php',
        method:'POST',
        data:{
            id_user:id_user,
            id_status:id_status
            },
            success:function(response){
            alert(response);
            }
        });
    });
});
xpszyzbs

xpszyzbs4#

从不完整的php来看,似乎您没有将 $ruser 在你的循环中。这意味着你总是把同一个身份证发到 like-status.php .
附言:本可以发表评论,但我不能。

相关问题