使用ajax发送rowID并将选定的行附加到新表中


Using ajax to send rowID and append selected rows to new table

当前正在尝试使用一个具有特定ID号的行,如果选中了该行,则允许用户单击按钮并将这些特定行附加到新表中,以便进行比较等。这些行都是使用php在表中生成的,我的代码只完成了一半,但我不确定该从哪里开始。

这是我当前的jquery:

   $(function(){
      var rows = [];
      $('compareRowButton').click(function(){
      $('.compareRow:checked').each(function(){
        var ele_id = $(this).attr('id');
        $.ajax({
          type : 'post',
          url : 'compare.php', //query 
          data :  'post_id='+ ele_id, // passing id via ajax
          success : function(data){
            rows.push(data);
          }
        });
      });
      $('.displayTable').click(function(){
        // append to table or divs
      });
    });
  });
});

下面是我在compare.php中的内容:

<?php
include_once('functions.php');
include_once('link_costreport_2013.php');
sec_session_start();
if(isset($_POST['post_id'])){
    $id = $_POST['post_id'];
}
    $query = $link->prepare("SELECT * 
                            FROM `s10`
                            WHERE `id` = :id");
    $query->bindParam(':id', $id, PDO::PARAM_INT);
    $query->execute();
    $results = $query->fetch();
    ?>

我承认我在jquery/ajax方面得到了一些帮助,所以我对它的工作原理有点了解,但有几件事我根本不了解:

  1. 如何将提取的结果转换为"data"参数,该参数将被推入"rows"数组。我猜这是在PHP方面
  2. 如何解析"数据"并将其显示在表中右侧标题下的<td></td>元素中?ID显然只是整个查询的一部分,但每个ID大约有6-7列的数据

最后,我只是试图显示带有选定行的新表,并隐藏旧表。

如果我能提供任何额外的信息,我很乐意,但不确定还能包括什么。

提前感谢

::编辑::

while ($results = $query->fetch()) {
                $id = $results['id'];
                $rowID = $results['id'];
                if($results['301_cost_of_uncomp_care'] != 0){
                $charityPortion = ($results['233_net_charity_care'] / $results['301_cost_of_uncomp_care']);
                $baddebtPortion = ($results['291_cost_of_non_mcr_bad_debts'] / $results['301_cost_of_uncomp_care']);
                } else {
                    $charityPortion = 0;
                    $baddebtPortion = 0;
                }
                echo "<tr id='$rowID'>";
                echo "<td></td>";
                echo "<td><input type='checkbox' id='$id' value='$id' class='compareCheck' name='post_id[]'></input></td>";
                echo "<td>".$results['provider_num'];
                echo "</td>";
                echo "<td><a id='$id' data-toggle='modal' href='#provmodal' class='push'>".$results['provider_name']."</a>";
                echo "</td>";
                echo "<td $style>'$".number_format($results['233_net_charity_care']);
                echo "</td>";
                echo "<td $style>'$".number_format($results['291_cost_of_non_mcr_bad_debts']);
                echo "</td>";
                echo "<td $style>'$".number_format($results['301_cost_of_uncomp_care']);
                echo "</td>";
                echo "<td $style>".sprintf("%.1f%%", $charityPortion * 100);
                echo "</td>";
                echo "<td $style>".sprintf("%.1f%%", $baddebtPortion * 100);
                echo "</td>";
                echo "</tr>";
                }
                ?>

这就是最终字段的计算方式。是否可以调用修改脚本中的格式?

在PHP端使用json_encode()对提取的结果进行编码:

$results = $query->fetch(PDO::FETCH_NUM);
echo json_encode($results);

然后,要显示结果,请将JSON数组转换为表中的一行。

$.ajax({
    type : 'post',
    url : 'compare.php', //query 
    data :  'post_id='+ ele_id, // passing id via ajax
    dataType: "json",
    success : function(data){
        var row = "<tr>";
        $.each(data, function(i, val) {
            row += "<td>" + val + "</td>";
        });
        row += "</tr>";
        $("#tableID").append(row);
      }
    });

如果您只想显示选定的列,让PHP返回一个关联数组:

$results = $query->fetch(PDO::FETCH_ASSOC);
echo json_encode($results);

并提取您想要的列:

$.ajax({
    type : 'post',
    url : 'compare.php', //query 
    data :  'post_id='+ ele_id, // passing id via ajax
    dataType: "json",
    success : function(data){
        var row = "<tr>";
        row += "<td>" + data.id + "</td>";
        row += "<td>" + data.provider_num + "</td>";
        row += "<td>" + data['291_cost_of_non_mcr_bad_debts'] + "</td>";
        row += "</tr>";
        $("#tableID").append(row);
      }
    });