@NetmenCC

Обновление значение чекбокса в БД через ajax?

В бд есть данные которые необходими вывести в таблицу и напротив каждой строки сделать чекбокс. Тоесть если данные были уведены и обработаны пользователь ставит галочку. Значение чекбокса после нажатия на него вносилось в бд. Написал код, все выводит, значение хранит но не обновляет. Тоесть если поставить галочку значение заносится в бд а если снять то нового значения не вносит.
в чем проблема, подскажите?
Вот код:
HTML
<td style="text-align:center"><input type="checkbox" class="checkbox" id="'.$row['id'].'" '.($row['chec'] ? 'checked="checked"' : '').' value="'.$row['chec'].'"></td></tr>


фаил обработчик 1.php
if (isset($_POST['id'])) 
{
  $id = (int)$_POST['id']; // получаем номер строки, для которой пришли изменения
  if (isset($_POST['col1'])) $col1='0'; else $col1='1'; // новое состояние col1
  @mysql_query("UPDATE yandex SET chec='$col1' WHERE id='$id'"); // сохраняем новые значения
}


<script type="text/javascript">

$(document).ready(function(){
	
$('.checkbox').on('change', function (e) {

        var chk = $(this).attr("id");
        var chkVal = $(this).attr("value");

		if($(this).is(':checked')) {
	    $(this).parent().parent().css('background','none');	
		$(this).val('1');
		}
		else
		{
		$(this).parent().parent().css('background','rgba(0, 123, 255, 0.1)');
        $(this).val('0');
		}

        $.ajax({
            url: '1.php',  // фаил обработчик 
            type: 'post',
            data: {id: chk, chkVal: chkVal },
            success: function(data) { 

			}
        });

});	

});

</script>
  • Вопрос задан
  • 96 просмотров
Пригласить эксперта
Ответы на вопрос 1
AnatolTh
@AnatolTh
Full Stack Developer
Вы сначала присваиваете переменной chkVal значение value чекбокса, а потом меняете его (value чекбокса), НО в переменной chkVal остаётся старое значение.

Примеры выхода из ситуации:
<script type="text/javascript">

$(document).ready(function(){ 
	$('.checkbox').on('change', function (e) {
		var chk = $(this).attr("id");

		if($(this).is(':checked')) {
			$(this).parent().parent().css('background','none');	
			$(this).val('1');
		} else {
			$(this).parent().parent().css('background','rgba(0, 123, 255, 0.1)');
			$(this).val('0');
		}
		
		var chkVal = $(this).attr("value");
		
		$.ajax({
			url: '1.php',
			type: 'post',
			data: {id: chk, chkVal: chkVal },
			success: function(data) {}
		});

	});	
});

</script>


<script type="text/javascript">

$(document).ready(function(){ 
	$('.checkbox').on('change', function (e) {
		var chk = $(this).attr("id");
		var chkVal = $(this).attr("value");

		if($(this).is(':checked')) {
			$(this).parent().parent().css('background','none');	
			$(this).val('1');
			chkVal = 1;
		} else {
			$(this).parent().parent().css('background','rgba(0, 123, 255, 0.1)');
			$(this).val('0');
			chkVal = 0;
		}
		
		$.ajax({
			url: '1.php',
			type: 'post',
			data: {id: chk, chkVal: chkVal },
			success: function(data) {}
		});

	});	
});

</script>
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
23 мая 2019, в 08:34
400 руб./в час
23 мая 2019, в 07:57
3000 руб./за проект