【问题标题】:AJAX form submitting the wrong row from dynamically generated rows of dataAJAX 表单从动态生成的数据行中提交错误的行
【发布时间】:2020-09-17 14:54:12
【问题描述】:

我目前正在从数据库中读取数据并在表格中显示返回的数据。一列包含每一行的 ID,我将其传递给这样的模式:

<a href=".user_id<?php echo $row['id']; ?>" data-toggle="modal" title="View and Edit User"> Edit </a>

模态从我包含的另一个 php 文件中获取数据,使用:

require('user_info.php');

每行的正确数据显示在模态上,因为我“获取”传递到模态的 id,并查询数据库并在模态上的表单上显示返回的信息。我一直小心使用类来识别表单元素,因为我打算使用 AJAX 提交表单。部分表格是:

<form method="POST" action="">
<div class="row form-group">
    <label>User ID</label>
    <div class="col-sm-12">
        <input name="userid" type="text" class="form-control userid" value="<?php echo $prow['id'];?>">
    </div>
    <div class="col-md-6">
        <label>Name</label> 
        <input name="name" type="text" class="form-control" value="<?php echo $prow['fullname'];?>">    
    </div>
    <div class="col-md-6">
        <label>Folder</label> 
        <input name="folder" type="text" class="form-control" value="<?php echo $prow['folder'];?>">        
    </div>

    <input type="submit" class="btn form-control modify_user_info" value="Submit Modification">
</div>

现在的问题是,无论我通过模式编辑和提交原始表格的哪一行,尝试编辑的都是表格的第一行。 modal 会根据选择的行显示正确的信息,但是在 modal 上提交表单总是会将第一行的数据返回到处理表单提交的 php 文件中。

这是我的 javascript:

<script>
    $(document).ready(function () {
      $('.modify_user_info').click(function (e) {
        e.preventDefault();
        var userid          = $('.userid').val();
        var email           = $('.email').val();
        $.ajax
          ({
            type:   "POST",
            url:    "modify_user_info.php",
            data: { 
                "userid":           userid,
                "email":            email, 
            },
            success: function (data) {
              $('.result').html(data);
            }
          });
      });
    });

PS:提交没有 AJAX 的表单可以正常工作。 编辑:我需要补充一点,打印表单提交的 id 表明它是提交的表的第一行,而不是选定的行。

【问题讨论】:

  • 您是否获得了var userid = $('.userid').val(); var email = $('.email').val(); 这些变量的正确值?
  • @JitendraYadav 我该如何检查?我怀疑 JavaScript 是错误的根源。
  • 从字段中获取值后使用console.log(userid, email)。确保它没有提交return false,然后检查浏览器控制台以查看输出。
  • console.log(userid) 返回数据库上的第一个 id,无论选择哪一行。
  • 验证您的代码是否包含具有相同类userid 的多个字段,这将是一个问题。

标签: javascript php html jquery ajax


【解决方案1】:

像这样改变你的href标签和模态

i hope you are using a foreach loop

then change your href tag and target modal like this

<a href="javaScript:void(0)" class="" data-toggle="modal" data-target="#user_id_<?php echo $row['id'];?>">View</a>

and your target modal as

<div style="" class="modal fade mymodal" id="user_id_<?php echo $row['id'];?>" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">

【讨论】:

  • 我正在使用 mysqli_fetch_array 遍历行并生成模态。
猜你喜欢
  • 1970-01-01
  • 2011-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-23
  • 2015-05-11
  • 1970-01-01
相关资源
最近更新 更多