Javascript 使用ajax发送rowID并将所选行追加到新表

Javascript 使用ajax发送rowID并将所选行追加到新表,javascript,php,jquery,mysql,ajax,Javascript,Php,Jquery,Mysql,Ajax,目前正在尝试获取一个具有特定ID号的行,如果选中该行,则允许用户单击按钮并将这些特定行附加到新表中,以便进行比较等。这些行都是使用php在表中生成的,我的代码只完成了大约一半,但我不确定接下来该怎么做 以下是我当前的jquery: $(function(){ var rows = []; $('compareRowButton').click(function(){ $('.compareRow:checked').each(function(){

目前正在尝试获取一个具有特定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方面得到了一些帮助,所以我对它的工作原理缺乏了解,但有几点我根本不了解:

  • 如何将获取的结果转换为“data”参数,该参数被推送到“rows”数组中。我猜这是在PHP方面
  • 我如何解析“数据”并将其显示在我的表中右侧标题下的
    元素中?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>";
                    }
                    ?>
    
    while($results=$query->fetch()){
    $id=$results['id'];
    $rowID=$results['id'];
    如果($results['301\u成本\u护理费用]!=0){
    $CharityPartion=($results['233_net_charity_care']/$results['301_cost_uncomp_care']);
    $Baddebt部分=($results['291'u非mcr'u坏账成本]/$results['301'u不合作护理成本]);
    }否则{
    $CharityPartion=0;
    $BadDebtPart=0;
    }
    回声“;
    回声“;
    回声“;
    回显“.$results['provider_num'”;
    回声“;
    回声“;
    回声“;
    echo“\$”.number\u格式($results['233\u net\u charity\u care');
    回声“;
    echo“\$”.number\u格式($results['291\u非mcr\u坏账成本]);
    回声“;
    echo“\$”.number\u格式($results['301\u-cost\u-of-uncomp\u-care']);
    回声“;
    echo”“.sprintf(“%.1f%%”,$CharityPartion*100);
    回声“;
    echo”“.sprintf(“%.1f%%”,$BadDebtParty*100);
    回声“;
    回声“;
    }
    ?>
    
    这就是最终字段的计算方式。是否可以像脚本中那样调用modify the formatting?

    在PHP端使用
    json\u 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);
          }
        });
    
    并提取所需的列:

    $.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);
          }
        });
    
    $.ajax({
    键入:“post”,
    url:'compare.php',//查询
    数据:“post_id=”+ele_id,//通过ajax传递id
    数据类型:“json”,
    成功:功能(数据){
    var行=”;
    行+=“”+data.id+“”;
    行+=“”+data.provider_num+“”;
    行+=“”+数据['291非mcr坏账成本']+“”;
    行+=”;
    $(“#tableID”).append(行);
    }
    });
    
    您可能只需要执行一个ajax请求,就可以大大改进它,比如->这是可行的,但我想我没有必要告诉您我的数据库是如何设置的,因为我没有意识到解决方案是像您为
    $所做的那样迭代返回的php/json数组。每个
    函数。我将以我在原始帖子中调用原始表中的字段的方式发布,以便您可以看到,但例如,我拥有的最后两个字段是根据之前的结果计算的。就像我说的,我将把它添加到原始文章中,并尝试更好地解释这个过程。如果你想添加额外的列,只需在
    $.each()
    循环之后添加。或者你可以在PHP中这样做,然后再将结果发送到客户端。另一个选择是让PHP为
    创建HTML。有很多方法可以做到这一点,它们都非常简单。好的,这一部分是有意义的。有没有一种方法可以控制迭代的I值范围?
    $.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);
          }
        });