#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. Спасибо!