【问题标题】:ajax response display only last row from database in jquery and php?ajax响应仅显示jquery和php中数据库的最后一行?
【发布时间】:2019-02-15 05:23:05
【问题描述】:

我正在研究 php 和 jquery,并与公司合作。一世 想要显示特定公司的所有员工选择 公司。为此,我正在使用带有 jquery 的 ajax 响应。我的回应 向我展示了完美的数据,但我的每个功能都无法正常工作。 它只显示了来自 db 的最后一条记录。

$.ajax({

          method: "GET",
           dataType: 'json',
           url:"getdata.php?id="+emp_id,
              success:function (response){
                     $.each(response, function( index, value ) {
                              $(".bodytable").empty();
                              $("table.table").append("<tr><td>" + value.emp_name + "</td><td>"  + "</td><td><input type='file'></td></tr>");

                      });
              },  
      });

我的回复显示了正确的数据。 例如,如果我有 2 名员工,它会告诉我 [object object][object object]

如果我有 1 名员工,它会告诉我 [object object].

但它不能在每个函数中工作。在每个函数中,它只显示数据库中的最后一条记录。

我的公司列表html:

<select  id="billing_com" name="billing_com" >
        <option>--Select Customer--</option>
        <?php   foreach($com_data as $key=>$eachcomData){
            ?>
            <option value="<?php echo $eachcomData['com_id'];?>"  <?php   
                    if(isset($_GET['id'])){ echo ($upload['com_name'] == $eachcomData['com_id'])?'selected=selected':'abc';   }    ?> >

                <?php echo $eachcomData['com_name']; ?>

            </option>



             <?php }?>

        </select>

将在 ajax 响应后调用的代码:

 <table class="tabledata">
                    <thead>
                        <tr>
                            <th>Employee Name</th>
                            <th>Attach Payslip</th>
                        </tr>
                    </thead>
                    <tbody class="bodytable">

                    </tbody>
                </table>

【问题讨论】:

  • 显示你的 php 代码。返回值是对象,而不是数组。
  • $(".bodytable").empty(); 在每次迭代时都为空,所以把它放在循环之外。

标签: php jquery ajax


【解决方案1】:

您应该在每个循环之外清空您的表格。像这样:

$.ajax({
          method: "GET",
           dataType: 'json',
           url:"getdata.php?id="+emp_id,
              success:function (response){
                     $(".bodytable").empty();
                     $.each(response, function( index, value ) {

                              $("table.table").append("<tr><td>" + value.emp_name + "</td><td>"  + "</td><td><input type='file'></td></tr>");

                      });
              },  
      });

您还直接附加到表中。我更喜欢像下面这样附加在 tbody 中:

$(".bodytable").append("<tr><td>" + value.emp_name + "</td><td>"  + "</td><td><input type='file'></td></tr>");

希望对你有帮助。

【讨论】:

  • 它对我有用。但我必须两次选择那个特定的公司。在第二次选择中,它显示了 2 名员工。
  • 你也可以添加完整的 HTML 吗?
  • 你能更新你的 jquery cod 吗?当您获得选择的更改事件时添加代码。因为所有其他代码看起来都很好。
猜你喜欢
  • 2013-09-27
  • 2020-03-15
  • 1970-01-01
  • 2013-06-22
  • 1970-01-01
  • 1970-01-01
  • 2017-02-12
  • 1970-01-01
  • 2019-10-15
相关资源
最近更新 更多