ajax在数组中显示json数据

x6yk4ghg  于 2021-06-20  发布在  Mysql
关注(0)|答案(3)|浏览(286)

我在一个表中有一些mysql数据,每行都有一个按钮。如果我点击这个按钮,就会出现一个引导模式和数据。我将mysql数据转换为json。.view\u数据是每行的按钮。如何将id发布到data.php并将json发送到modal中的表中?我正试图解决这个问题,但我是javascript新手,无法解决这个问题。
它实际上是工作的,但是如果我打开其中一个模式,数据以数组的形式显示:

我在一个表中有一些mysql数据,每行都有一个按钮。如果我点击这个按钮,就会出现一个引导模式和数据。我将mysql数据转换为json。.view\u数据是每行的按钮。如何将id发布到data.php并将json发送到modal中的表中?我正试图解决这个问题,但我是javascript新手,无法解决这个问题。它实际上是工作的,但是如果我打开其中一个模式,数据以数组的形式显示:

索引.php

<div class="modal fade" id="dataModal" tabindex="-1" role="dialog" aria-labelledby="basicModal">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
        <h4 class="modal-title" id="myModalLabel"></h4>
      </div>
      <div class="modal-body" id="moreInfo">
        <div class="table-responsive">  

      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
      </div>
    </div>
  </div>
</div>
</div>

        <script>
            $(document).ready(function(){
                $('.view_data').click(function(){  
                    var data_id = $(this).attr("id");  
                    $.ajax({  
                        url:"data.php",
                        method:"post",  
                        data:{data_id:data_id},  
                        success:function(data){  
                            $('#moreInfo').html(data);  
                            $('#dataModal').modal("show");  
                        }  
                    });  
                });

                $.ajax({
        url: 'data.php',
        type: 'get',
        dataType: 'JSON',
        success: function(response){
            var len = response.length;
            for(var i=0; i<len; i++){
                var id = response[i].id;
                var table1 = response[i].table1;
                var table2 = response[i].table2;
                var conn = response[i].conn;

                var tr_str = "<tr>" +

                    "<td align='center'>" + table1 + "</td>" +
                    "<td align='center'>" + table2 + "</td>" +
                    "<td align='center'>" + conn + "</td>" +
                    "</tr>";

                $("#userTable").append(tr_str);
            }

        }
    });
});

        </script>

数据.php

$id=$_POST["data_id"];

    echo $html = '<table id="userTable" class="table table-bordered"><tr>  
                    <td align="center"><label><b>Data</b></label></td>  
                    <td align="center"><label><b>Connect to</b></label></td>  
                    <td align="center"><label><b>Description</b></label></td>
                </tr> 
                </table></div>';

    if ($conn){
    if(isset($id)) { 
    $sql=$conn->prepare("SELECT table1.table1_id AS id1, table1.data AS table1,
                                GROUP_CONCAT(DISTINCT(table2.data) SEPARATOR ', ') AS table2,
                                GROUP_CONCAT(DISTINCT(table1_table2.connection) SEPARATOR ', ') AS conn
                                FROM table1
                                LEFT JOIN table1_table2 ON table1.table1_id = table1_table2.table1_id
                                LEFT JOIN table2 ON table2.table2_id = table1_table2.table2_id
                                WHERE table1.table1_id=?
                                GROUP BY table1.table1_id");

            $sql -> bind_param('i', $id);
            $sql -> execute();
            $result = $sql -> get_result();
            $sql -> close();

            while($row= mysqli_fetch_assoc($result)){
                $id = $row['id1'];
                $table1 = $row['table1'];
                $table2 = $row['table2'];
                $conn = $row['conn'];

                $return_arr[] = array("id" => $id,
                    "table1" => $table1,
                    "table2" => $table2,
                    "conn" => $conn);
            }
    }
            echo json_encode($return_arr);
    }
e5nqia27

e5nqia271#

这条线也许是个好的起点

$('#moreInfo').html(data);

这里,看起来像 data 是json格式的。但是,$.html(something)不会自动将数据格式化到您要创建的表中。
这是有关$.html(something)的文档。”“something”应该是一个html字符串,而不是json数组
http://api.jquery.com/html/
试着服用 data ,遍历每个元素,并使用其他jquery命令将td、tr等附加到#moreinfo。
一些参考文献
在jquery中将json数组转换为html表
在jquery中添加表行

9jyewag0

9jyewag02#

这很简单。你可以把你的整张table送来。

$.ajax({  
        url:"data.php",
        method:"post",  
        data:{data_id:data_id},  
        success:function(data){             
            var html_row ='';
            $.each(data, function(key, val){
              html_row += '<td>'+val.table1+'</td><td>'+val.table2+'</td><td>'+val.conn+'</td>';
             });
           var html_content = `<table id="userTable" class="table table-bordered"><tr>  
                   <td align="center"><label><b>Data</b></label></td>  
                   <td align="center"><label><b>Connect to</b></label></td>  
                   <td align="center"><label><b>Description</b></label></td>
               </tr>${html_row} 
               </table>`;    
            $('#moreInfo').html(html_content);  
            $('#dataModal').modal("show");  
        }  
    });
ugmeyewa

ugmeyewa3#

您可以创建一个生成html表的函数,并在两个请求回调中使用它:

$(document).ready(function(){
    $('.view_data').click(function(){  
        var data_id = $(this).attr("id");  
        $.ajax({  
            url:"data.php",
            method:"post",  
            data:{data_id:data_id},  
            success:function(data){
                generateTable(data, $('#moreInfo'));

                $('#dataModal').modal("show");  
            }  
        });  
    });

    $.ajax({
        url: 'data.php',
        type: 'get',
        dataType: 'JSON',
        success: function(response){
            generateTable(response, $("#userTable"));
        }
    });
});

function generateTable(response, table){
    var len = response.length;

    for(var i=0; i<len; i++){
        var id = response[i].id;
        var table1 = response[i].table1;
        var table2 = response[i].table2;
        var conn = response[i].conn;

        var tr_str = "<tr>" +

            "<td align='center'>" + table1 + "</td>" +
            "<td align='center'>" + table2 + "</td>" +
            "<td align='center'>" + conn + "</td>" +
            "</tr>";

        table.append(tr_str);
    }
}

相关问题