表格中的栏值未更新

时间:2018-10-11 07:31:49

标签: javascript php jquery ajax

我无法更新一个列字段。请建议我代码中有什么问题

index.php

#......
from flask import jsonify
#......


@app.route('/my_data/', methods = ['POST'])
def parsing_data():
    #.....

    result = {'employee_id_': employee_id_, 'name':name}
    return jsonify(result)

remark.php

<?php
  $host    = "localhost";
  $user    = "root";
  $pass    = "";
  $db_name = "logistics";
  $lastId="";
  //create connection
  $con = mysqli_connect($host, $user, $pass, $db_name);
  $result = mysqli_query($con,"SELECT * FROM notification");
?>
<div class="table-inner-wrapper">
  <h5 class="text- blll"> Active Alerts </h5>
  <table class="table table-hover table-striped">
    <tr class="t_head">
      <th>ID </th>
      <th>Forklift ID</th>
      <th>Timestamp</th>
      <th>Duration</th>
      <th>Alert Details</th>
      <th></th>
      <th>Remark</th>
      <th></th>
    </tr>
    <?php
      while($row = mysqli_fetch_array($result)){
        echo "<form action='' id='remarks' method='post'>";
        echo "<tr>";
        echo "<td>" . $row['id'] . "</td>";
        echo "<td>" . $row['forklift_id'] . "</td>";
        echo "<td>" . $row['noti_start'] . "</td>";
        echo "<td>" . $row['duration'] . " hr</td>";
        echo "<td>" . $row['alert_details'] . "</td>";
        echo "<td><i class='email' id='". $row['id'] ."'> &nbsp;<i class='fa fa-inbox fa-2x'> </i> </i> </td>";
        echo "<td><textarea class='remarks' id='".$row['id']."'> ".$row['remarks']."  </textarea></td>";
        echo "<td><input type='button' class='btn btn-info remark' value='submit' id='".$row['id']."'></td>";
        echo "</tr>";
        echo "</form>";
      }
    ?>
  </table>
</div>
<script type="text/javascript">
  $(() => {

    $(document).ready(function(){

      $(".remark").on('click',function(e){
        e.preventDefault();
        var id = $(this).attr('id');
        var remarks    = $("textarea.remarks").val();
        //  alert(remarks);
        // alert(id);
        $.ajax({
          url:'remark.php',
          method:'POST',
          data: {id: id, remarks: remarks},
          success:function(data){
            alert(data);
            // return data;
          }
        });
      });
    });

  })
</script>

我正在尝试根据行ID更新提交时的备注列值,但它仅更新列值的第一行,如果我单击其余行,则不会更新备注值。

2 个答案:

答案 0 :(得分:3)

几件事:

我会将$id = $_REQUEST['id'];更改为$id = $_POST['id'];

第二,您的<form>标签位于while循环中,这意味着您在每次迭代中都回显出一种新形式。所有表格将具有相同的ID。这将给您带来问题,并符合您描述的行为类型。像这样从循环内部删除<form>标签:

echo "<form action='' id='remarks' method='post'>"; 

  while($row = mysqli_fetch_array($result)){

    echo "<tr>"; 
    echo "<td>" . $row['id'] . "</td>";
    echo "<td>" . $row['forklift_id'] . "</td>";
    echo "<td>" . $row['noti_start'] . "</td>";
    echo "<td>" . $row['duration'] . " hr</td>";
    echo "<td>" . $row['alert_details'] . "</td>";
    echo "<td><i class='email' id='". $row['id'] ."'> &nbsp;<i class='fa fa-inbox fa-2x'> </i> </i> </td>";
    echo "<td><textarea class='remarks' id='".$row['id']."'> ".$row['remarks']."  </textarea></td>";
    echo "<td><input type='button' class='btn btn-info remark' value='submit' id='".$row['id']."'></td>";
    echo "</tr>";


  }

echo "</form>"; 

答案 1 :(得分:1)

此行:

var remarks = $("textarea.remarks").val();

只会为您提供类textarea的第一个remarks的值。您需要改为从与按钮关联的文本区域访问这些备注。尽管您有多个具有相同id的元素,但您确实遇到了问题,因此您需要首先解决该问题。尝试更改此代码:

echo "<td><i class='email' id='". $row['id'] ."'> &nbsp;<i class='fa fa-inbox fa-2x'> </i> </i> </td>";
echo "<td><textarea class='remarks' id='".$row['id']."'> ".$row['remarks']."  </textarea></td>";

echo "<td><i class='email' id='e". $row['id'] ."'> &nbsp;<i class='fa fa-inbox fa-2x'> </i> </i> </td>";
echo "<td><textarea class='remarks' id='t".$row['id']."'> ".$row['remarks']."  </textarea></td>";

现在,您的textarea字段具有唯一的id,但仍与$row['id']相关。因此,在事件代码中,您可以编写:

var remarks = $("#t" + id).val();

获取与该按钮关联的备注的值。