使用Ajax中的数据填充表内容

时间:2018-03-19 16:05:57

标签: javascript php jquery ajax

我一直在寻找如何实现这一目标。我从这个网站得到了很多信息,但都无济于事。

我试图使用从使用Ajax的PHP文件获得的数据填充表 我已经能够获取数据,至少是在控制台中。但是当我尝试将它发送到桌面时,没有显示任何内容。没有显示错误,只是空白。

console.log(newarr)

带来 gives this answer (image)

但是当我这样做$("#report").html(newarr);时,没有任何事情发生。

以下是代码:

AJAX

$.post('./process/assetReport.php', data, function(data) {
  genData = JSON.parse(data);
  var newarr;

  for (var key in genData) {
    if (data.hasOwnProperty(key)) {
      newarr = genData[key];
      //console.log(newarr);
      $("#report").html(newarr);

    }
  }

});

PHP

foreach($all as $item) {
  $assetid = $item['assetid'];
  $staffid = $item['staffid'];
  $row2 = $user->showone('assets', 'assetid', $assetid);
  $row3 = $user->showone('staff', 'staffid', $staffid);
  $useData[] = array(
    'asset' => $row2['name'],
    'staff' => $row3['name'],
    'cost' => $item['cost']
  );
}
echo json_encode($useData);

我需要填充的表格

<table class="table" id="reportTable">
  <thead>
    <tr>
      <th>Asset Name</th>
      <th>Assigned To</th>
      <th>Cost</th>
    </tr>
  </thead>
  <tbody id="report">

  </tbody>
  <tfoot>
    <tr>
      <td><button type="button" class="btn btn-success" id="printReport"><i class="glyphicon glyphicon-print"></i> Print</button></td>
    </tr>
  </tfoot>
</table>

我希望我的问题足够解释 谢谢

2 个答案:

答案 0 :(得分:0)

我认为您需要使用genData [0]而不是genData,因为您在php或user $ useData中使用$ useData []而不是$ useData []

所以代码应该如下所示:

$.post( './process/assetReport.php', data, function (data) {
     genData = JSON.parse(data);

     var newarr;

     for(var key in genData[0]) {
         if(data.hasOwnProperty(key)){
              newarr = genData[key];

              //console.log(newarr);
               $("#report").html(newarr);

         }
     }

});

和php:

foreach ($all as $item) {
    $assetid = $item['assetid'];
    $staffid = $item['staffid'];
    $row2 = $user->showone('assets', 'assetid', $assetid);
    $row3 = $user->showone('staff', 'staffid', $staffid);
    $useData[] = array(
        'asset' => $row2['name'],
        'staff' => $row3['name'],
        'cost' => $item['cost']
    );
}
echo json_encode($useData);

答案 1 :(得分:0)

我已经创建了一个JSON数组的存根,并展示了如何遍历它,随时将行附加到表中。我排除了您的密钥检查,因为我不确定相关性。此代码的变体应存在于$.post()

的回调中

&#13;
&#13;
data = [{
  asset: "steve",
  staff: "steve",
  cost: '$999,999.99'
}, {
  asset: 'bob',
  staff:"bob",
  cost: '$0.99'
}];
var $row = $("<tr><td></td><td></td><td></td></tr>"); //the row template
var $tr;
$.each(data, function(i, item) {
  $tr = $row.clone(); //create a blank row
  $tr.find("td:nth-child(1)").text(item.asset); //fill the row
  $tr.find("td:nth-child(2)").text(item.staff);
  $tr.find("td:nth-child(3)").text(item.cost);
  $("#report").append($tr); //append the row
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <thead>
    <tr>
      <th>Asset Name</th>
      <th>Assigned To</th>
      <th>Cost</th>
    </tr>
  </thead>
  <tbody id='report'>
    <tbody>
</table>
&#13;
&#13;
&#13;