在现有页面上通过AJAX调用加载新视图时,如何在其中显示现有php变量?

时间:2019-04-24 21:09:16

标签: php ajax codeigniter-3

在CodeIgniter中,我有一个网页正在显示客户端。某个视图clients.php在表中列出客户端。它显示如下客户端:

<?php 
foreach ($clients as $client) {
?>
<tr>
    <td><?= $client->companyname ?></td>
    <td><?= $client->city ?></td>
    <td><?= $client->country ?></td>
    <td><?= $client->vat ?></td>
    <td><? <button class="edit-button" data-entityid="<?= $client->id ?>">edit</button></td>
</tr>
<?php
}
?>

正如您在上面看到的,我为每个客户端都有一个编辑按钮。单击按钮会进行AJAX调用,如下所示:

$('.edit-button').click(function(){
    $.ajax(
        {
            type: 'POST',
            url: 'modalloader/editclient/' + this.dataset.entityid,
            beforeSend: function(){
                $('.modal-content').html('loading...');
            },
            success: function(result){
                $('.modal-content').html(result);
            },
            error: function (data) {
                $('.modal-content').html('failed');
            }
        });
});

现在,当我调用方法modalloader/editclient/clientid时,我正在通过我的模型从数据库中再次加载特定客户端的数据,但是实际上我已经在页面上获得了这些数据(因为视图clients.php)。因此,我想知道是否可以从网页上已有的对象$clients中获取它。

现在,如果我对视图进行了var_dump($clients);的访问,并通过对modalloader/editclient/clientid的AJAX调用动态加载了该视图,则会显示null对象。

1 个答案:

答案 0 :(得分:1)

您可以从控制器(如json)返回$ clients变量,然后将其设置为js变量。 像这样:

<script>
    var clients = <?php echo $clients ?>;
<script>

之后,您可以在脚本中使用此变量