javascript - 无法通过ajax在仪表板上加载数据

标签 javascript php ajax yii2 actioncontroller

我的仪表板中有一个名为 SIM Balance 的部分 View 。此 View 应显示发给用户日期的模拟人生数量。

我已经设置好了 Controller

public function actionSimbalance()
{
    $sql = "SELECT user.`name` AS issued_to, COUNT(`sims`.`id`) AS sims_issued, sims.`operator_name` AS operator_name,
    CASE
    WHEN sims.`status` = 'Production Stored SIM' THEN 
    CAST(`sim_issueance_transaction`.`issued_at` AS DATE)
    WHEN sims.`status` = 'Testing Stored SIM' THEN 
    CAST(`sim_issueance_transaction`.`issued_at` AS DATE)
    WHEN sims.`operator_name` = 'Zong' THEN 
    CAST(`sim_issueance_transaction`.`issued_at` AS DATE)
    WHEN sims.`operator_name` = 'Mobilink' THEN 
    CAST(`sim_issueance_transaction`.`issued_at` AS DATE)
    ELSE CAST(`sims`.`created_at` AS DATE) END AS issued_date
    FROM `sims`
    INNER JOIN `sim_issueance_transaction` ON (`sims`.`id` = 
    `sim_issueance_transaction`.`sim_id`)
    INNER JOIN `user` ON (`sims`.`issued_to` = `user`.`id`)
    WHERE sims.`status` IN ('Testing Stored SIM','Production Stored SIM')
    GROUP BY user.`name`, sims.`status`, issued_date, sims.`operator_name`";


    $rows = Yii::$app->db->createCommand($sql)->queryAll();

    $output = [];
    $grandtotal = 0;

    foreach ($rows as $row) {
        $std = new \stdClass();
        $std->count = $row['sims_issued'];
        $std->issued_to = $row['issued_to'];
        $std->operator = $row['operator_name'];
        $std->issued_date = $row['issued_date'];
        $grandtotal += $std->count;
        $output[]= $std;
    }
    return $this->renderPartial('sim_progress', ['model' => $output, 'grandtotal' => $grandtotal]);
}

部分 View sim_progress在下面

<?php foreach ($model as $row){?>
<tr>
  <td><?=$row->issued_to?></td>
  <td><?=$row->count?></td>
  <td><?=$row->operator?></td>
  <td><?= $row->issued_date ?></td>
</tr>
 <?php } ?>
 <tr>
  <td><strong>Grand Total</strong></td>
  <td>
    <strong><?= $grandtotal ?></strong>
  </td>
  <td></td>
 </tr>

然后就是我设计的HTML sim-balance

<div class="box box-info">
<div id="af8a8d88334">
    <div class="print-header print-only">
        <center><img style="width: 100px" src="<?= 
     \yii\helpers\Url::to('@web/images/logo.png', true); ?>"/>
        </center>
        <br/>
        <hr/>
    </div>
    <div class="box-header with-border">
        <h3 class="box-title">SIM Balance</h3>
    </div>
    <div class="box-body">
        <div class="table-responsive">
            <table class="table no-margin">
                <thead>
                <tr>
                    <th>Issued To</th>
                    <th>Sims Issued</th>
                    <th>Operator Name</th>
                    <th>Issued At</th>
                </tr>
                </thead>
                <tbody id="dashboard-sim-balance">

                </tbody>
            </table>
        </div>
    </div>
</div>
<div class="box-footer clearfix">
    <a href="javascript:void(0)" onclick="$('#af8a8d88334').printThis();"
       class="btn btn-sm btn-default btn-flat pull-right">Print</a>
</div>

然后在我的主站点 index View 中,我将其称为如下

.
.
.
  <?php if (!Yii::$app->user->isGuest && in_array(Yii::$app->user->identity->user_role,[1,6])) {
                echo $this->render('dashboard/sim-balance');
            } ?>
.
.
.
.

$url_sim_balance = Url::toRoute('/dashboard/simbalance');
.
.
.
.

在我的 JS 中,我正在创建一个应该显示详细信息的 ajax 函数。

$script = <<< JS
$(document).ready(function () {
   .
   .
   .
   .
       loadSimBalance();

   .
   .
   .
 });

 function loadSimBalance() {
 $('#dashboard-sim-balance').html('');
 $.ajax({
  url: '$url_sim_balance',
  data: data.val(), // also tried $('#dashboard-sim-balance').val()
  success:function(data) {
    $('#dashboard-sim-balance').html(data);
  },
   error: function() {

    }
  });
}
JS;
$this->registerJs($script);

但是当我运行我的项目时,我看不到详细信息,而是一个空表,如下所示

enter image description here

如何设置我的 ajax 调用以查看详细信息。

如有任何帮助,我们将不胜感激。

最佳答案

改变

    function loadSimBalance() {
 $('#dashboard-sim-balance').html('');
 $.ajax({
  url: '$url_sim_balance',
  data: data.val(), // also tried $('#dashboard-sim-balance').val()
  success:function(data) {
    $('#dashboard-sim-balance').html(data);
  },
   error: function() {

    }
  });
}

  function loadSimBalance() {
 $('#dashboard-sim-balance').html('');
 $.ajax({
  url: '$url_sim_balance',

  success:function(data) {
    $('#dashboard-sim-balance').html(data);
  },
   error: function() {

    }
  });
}

关于javascript - 无法通过ajax在仪表板上加载数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49108884/

相关文章:

javascript - DTD 是否仍用于符合 xml?

javascript - Javascript 秒表遇到问题

php - 比较 laravel 查询结果

php - 数据迁移到 CiviCRM - 保留遗留 ID

javascript - 在 React 组件中显示并行 Ajax 请求的结果

node.js - 使用 rxjs ajax() 我得到 "CORS is not supported by your browser"

javascript - DataTables 读取对象内的数组

javascript - Kineticjs - 鼠标悬停不准确

php - 使用绑定(bind)变量的 SELECT 查询示例

javascript - 未捕获的 TypeError : a. indexOf 不是函数 [PRELOADER]