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

时间:2015-04-03 01:05:04

标签: javascript php jquery mysql ajax

目前正在尝试使用特定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. 如何将获取的结果转换为&#39;数据&#39;被推入&#39;行的参数&#39;阵列。我猜这是在PHP方面。
  2. 如何解析数据&#39;并将它显示在我的表格中右侧标题下的<td></td>个元素中?该ID显然只是整个查询的一部分,但每个ID大约有6-7列数据。
  3. 最后,我只是尝试显示包含所选行的新表并隐藏旧表。

    如果我能提供任何其他信息,我很高兴,不确定还包括哪些内容。

    提前致谢

    :: EDIT ::

    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>";
                    }
                    ?>
    

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

1 个答案:

答案 0 :(得分:1)

在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);
      }
    });