@pzpzpz
Frontend разработчик

Почему не происходит отправления ajax запроса при клике на чекбоксе?

При чтении json файла формирую вывод данных в html. Html код формируется нормально. Полученные данные из json использую для формирования чекбоксов (функция livelist_more). При клике на чекбоксы запрос должен отправляться в функцию send, но почему то не отправляется.

P.S
Ошибка на мой взгляд в том, что функция не видит функцию. Пробовал разные варианты, но безуспешно.
Помогите разобраться в чем же ошибка и, если можно, пример.

//функция отправки данных
function send(data){
     $.ajax({
            type: "get",
            url: url_send,
            data: data,
            cache: false,
            success: function(html){
               $('#result2').append(data+'<br>');
            }
        });
        return false;

  }

json файл
[{"id": 15, "name": "\u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0439 livelist 2", "rotations": [3, 5]},
{"id": 18, "name": "\u041d\u043e\u0432\u044b\u0439 livelist", "rotations": []}]

//отправка значений ajax-ом в функцию send для checkbox
$(document).ready(function(){
 $('input[type="checkbox"]').each(function () {
        $(this).change(function(){
          if($(this).attr("checked")){
            send($(this).attr("name")+'='+1);
            }else{
              send($(this).attr("name")+'='+0);
              }
              });
              });


//функция для разбора json и формирования html кода

function livelist_more (){
$.getJSON(file.json, function(data) {
  var items = [];
 $.each(data, function(key,val) {
items.push('<li><label>' + val.name + '(' + val.id + ') <input type="checkbox" name="ch_' + val.id + '" id="ch_' + val.id + '"  /></li>');

});
 $('<ul/>', {
   'class': 'my-new-list',
   html: items.join('')
 }).appendTo('#livelist_el');
});


};

livelist_more ();
} );
  • Вопрос задан
  • 392 просмотра
Решения вопроса 1
BuriK666
@BuriK666
Компьютерный псих
$('input[type="checkbox"]').each(function () {
Обрабатывает только существующие на данный момент checkbox

$('#livelist_el').on('change', 'input[type="checkbox"]', function(){
  if($(this).attr("checked")){
    send($(this).attr("name") + '=' + 1);
  } else {
    send($(this).attr("name") + '=' + 0);
  }
})
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы