При загрузке нового представления с помощью AJAX-вызова на существующей странице, как я могу отобразить в нем существующие переменные php?

#php #ajax #codeigniter-3

#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); в представлении, которое я динамически загружал с помощью AJAX-вызова, modalloader/editclient/clientid он показывает null объект.

Комментарии:

1. К тому времени, когда ваш исходный HTML-код попадает в браузер клиента, $clients переменной в PHP уже нет. Этого нет в HTML, и уж точно не в PHP, который обрабатывает вызов Ajax.

Ответ №1:

Вы можете вернуть переменную $ clients из контроллера, такого как json, и после этого установить ее в переменную js. Вот так:

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

После этого вы можете использовать эту переменную в своем скрипте

Комментарии:

1. На самом деле это хороший момент, который вы делаете там. Затем я могу взять все данные этого конкретного клиента из js var и распечатать их, используя js вместо php. Спасибо!