checkbox return error Uncaught RangeError: Максимальный размер стека вызовов превышен при изменении - PullRequest
0 голосов
/ 17 апреля 2020

Я пытаюсь обновить значение chckbox в Mysql БД, но застрял с этой ошибкой:

Uncaught RangeError: Превышен максимальный размер стека вызовов

Html:

<input type="checkbox" data-id="<?php echo $row['id']; ?>" name="product_edit_active_control" id="product_edit_active_control" value='' />

Javascript:

$(document).ready(function() {
         $("#product_edit_active_control").on("change", function() {
              var id    = $(this).attr("data-id");
              var activ = $(this).val();
                  if ($(this).is(":checked"))
                 {
                    var activ = $(this).val(1);
                  } else {
                    var activ = $(this).val(0);
                  }
                   $.post("inc/sql/produse/activare-produs.php", {
                     id:id, 
                     product_edit_active_control:activ

               },  function(data) {

                     $.toast({
                    heading: 'Success',
                    text: 'MODIFICATION SUCCESS! ',
                    showHideTransition: 'slide',
                    icon: 'success',
                    loaderBg: '#fff',
                    hideAfter: 1300,
                    position: 'top-right'
                })

             });
         });
     });

1 Ответ

0 голосов
/ 17 апреля 2020

Вы обновляете значение флажка из обработчика изменений.

Это, в свою очередь, вызовет другое обновление, которое снова вызовет ваш метод.

И вы снова обновите значение. Вот почему вы получаете переполнение стека. Это оскорбительные строки.

if ($(this).is(":checked"))
{
  var activ = $(this).val(1);
} else {
  var activ = $(this).val(0);
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...