【问题标题】:all data is in page 1 after calling tbody via AJAX通过 AJAX 调用 tbody 后,所有数据都在第 1 页中
【发布时间】:2019-08-31 08:33:58
【问题描述】:

我可以就此事寻求帮助吗?我检查了有关此问题的所有指南,并遵循了所有指南,但没有运气。

当通过 AJAX 调用填充表格时,所有数据仅在一个页面中。

我尝试将整个 dataTable 脚本添加到 tbody 调用者中,但没有成功。

这些是以下代码。

这是我的<?php include 'ajax-process/earnings_amendment_account-ajax-table.php'; ?>

<script>
 $(document).ready(
            function() {
                setInterval(function() {                  
                $.ajax({
                url:'table_body/earnings_amendment_account_table_body.php',
                dataType:'json',
                type:'get',
                cache:true,
                success:json,

               });

               function json(data){
                   $("#earnings_amendment_account_body").empty();
                   $(data).each(function(index,value)  {
                        console.log(value);
                        var table = '<tr>' +
                        '<td>' + value.accountcode + '</td>'+
                        '<td>' + value.accounttitle + '</td>'+
                        '<td>' + value.accounttype + '</td>'+
                        '</tr>';
                        $('#earnings_amendment_account').append( table );});
                        }
                        }, 1000);
                        $('#earnings_amendment_account').dataTable();

            });
</script>

这是我在 index.php

中的表
<table id="earnings_amendment_account" class="table table-bordered" style="table-layout: fixed; display: none">
                <thead>

                  <th>Account Code</th>
                  <th>Account Title</th>
                  <th>Account Type</th>

                </thead>
                <tbody id="earnings_amendment_account_body">

                </tbody>
              </table>

这是我的table_body/earnings_amendment_account_table_body.php

<?php
include '../backend/conn.php';
include '../backend/session.php';
$params=array();
$sql = "SELECT accountcode,accounttype,accounttitle,accounttype,postedby,dateposted,
approvedby,dateapproved FROM earningsamendmentaccount";
$query = sqlsrv_query($conn, $sql, $params, array("Scrollable" => SQLSRV_CURSOR_KEYSET));
if ($query === false ) { echo "Error (sqlsrv_query): ".print_r(sqlsrv_errors(), true); exit; }                  
$dbdata = array();
while($row = sqlsrv_fetch_array($query, SQLSRV_FETCH_ASSOC)){
$dbdata[]=$row;
}
echo json_encode($dbdata);
                  ?>

这是我的数据表。

// 这个dataTable中的所有函数仍然没有包含,因为我正在测试当我的dataTable body通过AJAX调用时是否一切正常。

<script>
function format ( dataSource ) {
    var html = '<table cellpadding="5" cellspacing="0" border="0" style="padding-left:50px;" class="table table-bordered">';
    for (var key in dataSource){
        html += '<tr>'+
                   '<td>' + key             +'</td>'+
                   '<td>' + dataSource[key] +'</td>'+
                '</tr>';
    } return html += '</table>';  }
var earnings_amendment_account_table = $('#earnings_amendment_account').DataTable({
    "pagingType": "full_numbers"
    });
      $('#earnings_amendment_account').on('click', 'td.details-control', function () {
          var tr = $(this).closest('tr');
          var row = earnings_amendment_account_table.row(tr);

          if (row.child.isShown()) {
              row.child.hide();
              tr.removeClass('shown');
          } else {
              // Open this row
              row.child(format({
                  'Posted By : ' : tr.data('key-1'),
                  'Date Posted : ' : tr.data('key-2'),
                  'Approved By : ' :  tr.data('key-3'),
                  'Date Approved : ' :  tr.data('key-4')
              })).show();
              tr.addClass('shown');
          } });
</script>

数据正在控制台上传递。 显示 0 个条目中的 0 个,但数据显示在页面中。

顶部:

底部:

非常感谢您。

【问题讨论】:

    标签: javascript php jquery ajax


    【解决方案1】:

    这是我做了数据表的基本示例,如果您使用数据表并进行自定义操作,则需要遵循这些内容。

    索引.php

    <!DOCTYPE html>
    <html leng="en">
    <head>
        <title>Display Emloyee </title>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
         <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
        <!-- jQuery library -->
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
        <!-- Latest compiled JavaScript -->
        <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"></script> 
        <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/v/dt/dt-1.10.18/datatables.min.css"/>
        <script type="text/javascript" src="https://cdn.datatables.net/v/dt/dt-1.10.18/datatables.min.js"></script>
    </head>
    <body>
        <div class="container-fluid">
            <div class="row">
                <div class="table-responsive">
                    <table class="table table-striped" id="tabl_user">
                        <thead>
                            <tr>
                            <th>Id</th>
                            <th>F Name</th>
                            <th>L Name</th>
                            <th>Gender</th>
                            </tr>
                        </thead>
                    </table>
                </div>
            <script>
            $(document).ready(function()
            {
                $('#tabl_user').DataTable( {
                    "processing": true,
                    "serverSide": true,
                    "lengthMenu": [5, 10, 25, 50, 100, 150],
                    "columnDefs" : [{orderable:false, targets:[1] }],
                    "ajax": "trylimited.php"
                } );
            });
            </script>
            </div>
        </div>
    </body>
    </html>
    

    trylimited.php

    <?php
    include "con.php"; 
    $column = array('id', 'first_name', 'last_name', 'phone_no', 'mobile','city', 'zip');
    $sIndexColumn = "id";
    $sTable = "elision_user";
    // Searching 
    $wherecondition = "";
    
    if($_REQUEST['search']['value'] != "")
    {
    
        $wherecondition = "WHERE (";
        for($i=0; $i<count($column); $i++)
        {
            $wherecondition .="".$column[$i]." LIKE '%".$_REQUEST['search']['value']."%' OR ";
    
        }       
        $wherecondition = substr_replace($wherecondition, "", -3);
        $wherecondition .=')';
    
    }
    $draw = $_REQUEST['draw'];
    $start = $_REQUEST['start'];
    $limit = $_REQUEST['length'];
    $sql = "SELECT * FROM allinone";
    $res = mysqli_query($con, $sql);
    $sql1 = "SELECT * FROM elision_user";
    $sql1.=" $wherecondition ORDER BY ".$column[$_REQUEST['order'][0]['column']]." ".$_REQUEST['order'][0]['dir']." limit  $start, $limit";
    $res1 = mysqli_query($con, $sql1);
    $recordsTotal =  mysqli_num_rows($res1);
    $recordsFiltered =   mysqli_num_rows($res);
    $asd = array();
    $final_array = array();
    while( $row = mysqli_fetch_array($res1) ) {
     $dataArray = array();
        $dataArray[] = $row["id"];
        $dataArray[] = $row["first_name"];
        $dataArray[] = $row["last_name"];
        $dataArray[] = $row["phone_no"];
        $dataArray[] = $row["mobile"];
        $dataArray[] = $row["city"];
        $dataArray[] = $row["zip"];
        $asd[]=$dataArray;
     }
    
    $final_array = array("draw" => $draw, "recordsTotal" => $recordsTotal, "recordsFiltered" => $recordsFiltered, "data" => $asd, "sql" => $sql1);
    echo json_encode($final_array); exit;
    ?>
    

    希望这个例子能帮助您解决您的问题。 如果这个例子有帮助,请投赞成票

    【讨论】:

    • 现在正在学习,我会尽快回复您。谢谢。
    猜你喜欢
    • 2021-04-29
    • 2018-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-28
    • 2010-10-24
    • 2023-03-27
    相关资源
    最近更新 更多