как использовать таблицу HTML с флажком во всех строках, и при нажатии кнопки я хочу получить эти выбранные идентификаторы флажков в модальном окне. поэтому я хочу использовать ajax для получения связанных данных выбранных идентификаторов из базы данных и отображения в таблице в модальном режиме с помощью PHP-CodeIgniter. кто-нибудь может помочь мне получить это?
Я пробовал много способов, но все безуспешно.
Заранее большое спасибо.
Пожалуйста, посмотрите мой код.
На моей таблице страницы просмотра
<table id = "dynamic-table">
<thead>
<th> Check</th>
<th> Name</th>
<th> Country</th>
</thead>
<tbody>
<tr>
<td> <input type = "checkbox" name = "ch1" value = "1"> </td>
<td> Rashid </td>
<td> India </td>
</tr>
<tr>
<td> <input type = "checkbox" name = "ch1" value = "2"> </td>
<td> Nishad </td>
<td> India </td>
</tr>
<tr>
<td> <input type = "checkbox" name = "ch1" value = "3"> </td>
<td> sajeesh </td>
<td> India </td>
</tr>
</tbody>
</table>
<button name = "submit" id = "subm"> Submit </button>
<button name = "cancel" id = "canc"> Cancel </button>
<div id = "message"></div>
Скрипт на странице просмотра:
<script>
$(document).ready(function(){
$("#subm").click(function(){
getValueUsingParentTag();
});
});
function getValueUsingParentTag(){
var chkArray = [];
/* look for all checkboes that have a parent id called 'checkboxlist' attached to it and check if it was checked */
$("#dynamic-table input:checked").each(function() {
chkArray.push($(this).val());
});
/* we join the array separated by the comma */
var selected;
selected = chkArray.join(',') ;
var url = "<?php echo base_url(); ?>/index.php/Ajax";
$.post( url, { test_input: selected } )
.done(function(data){
$("#message").html(data.result);
});
/* check if there is selected checkboxes, by default the length is 1 as it contains one single comma */
if (selected.length > 0){
alert("You have select" + selected);
}else{
alert("Please at least check one of the checkbox");
}
}
Мой контроллер AJAX
<?php
определено ('BASEPATH') OR exit ('Прямой доступ к сценарию не разрешен');
class Ajax расширяет CI_Controller {
public function index()
{
$posted = $this->input->post('test_input');
echo json_encode(array('result'=> $posted));
}
}
Пожалуйста, предложите мне правки или хорошие. Собственно, я хочу получить данные из БД. Но сначала в этом коде я просто попытался работать с ajax без db. как только это будет успешным, я могу продолжить извлечение данных из БД.
@cyril да, конечно, могу. Отредактирую свой вопрос.
@cyril Обновлено с кодом
попробуй так сохранить значение id в атрибуте value флажка. затем добавьте класс checkAll к флажку в заголовке таблицы. и добавьте класс my-checkbox к флажку каждой строки, тогда следующий метод будет выбирать / снимать все флажки одновременно. напишите другую функцию, которая будет проходить через каждый флажок с классом my-checkbox и сохранять значение флажка в массиве, а затем возвращать массив. Надеюсь это поможет....
// Select / Deselect all checkboxes
$(".checkAll").click(function () {
$('input:checkbox').not(this).prop('checked', this.checked);
console.info(getCheckedValues());
});
function getCheckedValues(){
var checkboxes = document.getElementsByClassName('my-checkbox');
var checkboxesChecked = [];
// loop over them all
for (var i=0; i < checkboxes.length; i++) {
// And stick the value of checked ones onto an array...
if (checkboxes[i].checked) {
checkboxesChecked.push(checkboxes[i].value);
}
}
// Return the array if it is non-empty, or null
return checkboxesChecked.length > 0 ? checkboxesChecked : null;
}
;
Мне нужен этот массив для публикации и извлечения из БД с помощью ajax.
затем вы можете отправить массив, возвращаемый методом getCheckedValues () через ajax, используя jquery или простой javascript
когда я пытаюсь подключиться к ajax, он не работает. Я обновил свой вопрос с помощью фрагмента кода. не могли бы вы взглянуть на это?
Можете ли вы опубликовать код того, что вы пытались сделать до сих пор? Это должно помочь другим начать помогать вам.