Передача одного из тегов & lt; td & gt; значение для контроллера при нажатии кнопки

У меня есть такая таблица:

введите описание изображения здесь

Когда я нажимаю Удалить! Кнопка, я хочу передать идентификатор роли в контроллер.

После поиска много дел в stackoverflow. Мне только что удалось получить идентификатор роли с помощью JS.

Код как это:

$(".deleteButton").click(function() {
var $row = $(this).closest("tr");
var $text = $row.find("td:first-child").text();

// Let's test it out
alert($text);
});

Но проблема в том, что я не могу передать его обратно кнопке, поэтому кнопка может передать его контроллеру.

Есть ли простой способ передать его на контроллер? Может быть, не извлекая сначала идентификатор роли, а при нажатии на кнопку передается значение и вызывается контроллер сразу?

Это мой код:

<table class="table" id="myTable">
<thead class="text-primary">
<th class="col-md-1">ID Role</th>
<th class="col-md-3">Role</th>
<th class="col-md-3">Jumlah Member</th>
<th></th>
</thead>

<tbody>
<?php
foreach($result as $row) { ?>
<tr>
<td><?php echo $row->id_role ?></td>
<td><?php echo $row->role ?></td>
<td><?php echo $row->jumlah ?></td>
<td>
<button type="button" class="btn btn-success btn-sm editButton">Edit!</button>
<button  type="button" class="btn btn-danger btn-sm deleteButton">Delete!</button>
</td>
</tr>
<?php
}  ?>
</tbody>
</table>

1

Решение

Вы должны использовать JavaScript? Если нет, то это простая задача для формы

<form action="path/to/your/controller" method="post">
<table class="table" id="myTable">
<!-- thead, etc -->
<tbody>
foreach($result as $row) : ?>
<tr>
<td><?= $row->id_role ?></td>
<td><?= $row->role ?></td>
<td><?= $row->jumlah ?></td>
<td>
<button type="submit" name="edit" value="<?= htmlspecialchars($role->id_role) ?>"class="btn btn-success btn-sm editButton">Edit!</button>
<button type="submit" name="delete" value="<?= htmlspecialchars($role->id_role) ?>"class="btn btn-danger btn-sm deleteButton">Delete!</button>
</td>
</tr>
<?php endforeach ?>
</tbody>
</table>
</form>

Ваш контроллер будет получать либо $_POST['edit'] или же $_POST['delete'] с идентификатором роли в качестве значения.

Если вы заинтересованы в защите вашей формы от возможных атак между сайтами, подделка запросов, CodeIgniter имеет встроенное решение.


В противном случае, я бы просто добавил id_role свойство кнопки, например

<button type="button" class="btn btn-danger btn-sm deleteButton" value="<?= htmlspecialchars($role->id_role) ?>">Delete!</button>

и в вашем JS

$('.deleteButton').on('click', function(e) {
var roleId = this.value
$.ajax({
url: '/roles/' + roleId, // assuming a REST API
method: 'DELETE'
}).done(function() {
alert('Deleted role ' + roleId);
})
})
1

Другие решения

Вы назначаете идентификатор роли другому <td> что немного дольше, чтобы получить идентификатор с помощью jQuery. Вы можете легко получить идентификатор кнопки нажатия, просто присвоить идентификатор, как.

<button type="button" id="<?php echo $row->id_role ?>" class="btn btn-danger btn-sm deleteButton">Delete!</button>

и тогда вы можете легко получить конкретный идентификатор строки

$(".deleteButton").click(function() {
var $text= $(this).attr("id");

alert($text);
});

и затем вы можете отправить этот идентификатор на контроллер с помощью AJAX.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector