2015-11-17 3 views
0

это мой Аякса кодАякса проблема, связанная с CheckBox

$(document).ready(function (e) { 
      $('.checkbox').click(function (e) { 

       $(event.currentTarget).val($(event.currentTarget)[0].checked); 
       var Curl = $('#chkform').attr("action"); 
       var val = $('.checkbox:checked').val(); 
       alert(val); 
       $.ajax({ 
        url: Curl, 
        type: "POST", 
        dataType: "json", 
        data: { 
         chk: val 
        }, 
        contentType: false, 
        cache: false, 
        processData: false, 
        success: function (result) { 
         alert(result); 
         var l = result.length; 
         for (var i = 0; i < l; i++) { 
          $('#table').append($('<tbody>') 
            .append($('<tr>') 
              .append('<td>' + result[i].id + '</td>') 
              .append('<td>' + result[i].product_name + '</td>') 
              .append('<td>' + result[i].product_description + '</td>') 
              .append('<td>' + result[i].product_price + '</td>') 
              .append('<td>' + result[i].product_pieces + '</td>')) 
            ); 

         } 

        }, 
        error: function() { 
        } 
       }); 
      }); 
     }); 
<form method="post" id="chkform" action="<?php echo site_url('form_sort/sorting') ?>" > 
     <input type="checkbox" name="chk" value="5000-6999" class="checkbox">5000-6999<br> 
     <input type="checkbox" name="chk" value="7000-8999" class="checkbox">7000-8999<br> 
     <input type="checkbox" name="chk" value="9000-12999"class="checkbox">9000-12999<br> 


    </form> 

это мой код контроллера

$chkvalue = $this->input->post("chk"); 
    echo $chkvalue; 

я не могу получить значение флажок в $ chkvalue, когда я нажимаю на CheckBox оповещения отдавания me null в результате, я хочу, чтобы результат был значением checkbox, потому что i echo $ chkvalue.

ответ

0

Я думаю, проблема в том, что вы используете параметр e в качестве параметра в функции щелчка, а затем используете event.currentTarget.

Вы можете использовать что-то вроде этого:

$(document).ready(function (e) { 
    $('.checkbox').click(function (event) { 
     $(event.currentTarget).val($(event.currentTarget)[0].checked); 
     //Rest of code here 
    }); 
}); 

Я не уверен, что это будет работать, когда вы меняете е в случае, я не понимаю, почему вы меняете значение цели.

Возможно, что-то подобное будет работать лучше:

$(document).ready(function (e) { 
    $('.checkbox').each(function(){ 
     $(this).on('click', function(){ 
      var Curl = $('#chkform').attr("action"); 
      var val; 
      if($(this).is(":checked")){ 
      val = "checked" 
      }else{ 
      val = "unchecked" 
      } 
     //Condition could be simplify to ($(this).is(":checked"))?val = "checked" : val = "unchecked"; where ? is the value if it's true and : the value if it's false 
     alert("val="+val); 
     //Ajax to send here 
     }); 
    }); 
}); 
0
$(document).ready(function (e) { 
      $('.checkbox').click(function (e) { 




       $.ajax({ 
        url: Curl, 
        type: "POST", 

        data: { 
         chk: val 
        }, 

        cache: false, 

        success: function (result) { 

         var l = result.length; 
         for (var i = 0; i < l; i++) { 
          $('#table').append($('<tbody>') 
            .append($('<tr>') 
              .append('<td>' + result[i].id + '</td>') 
              .append('<td>' + result[i].product_name + '</td>') 
              .append('<td>' + result[i].product_description + '</td>') 
              .append('<td>' + result[i].product_price + '</td>') 
              .append('<td>' + result[i].product_pieces + '</td>')) 
            ); 

         } 

        }, 
        error: function() { 
        } 
       }); 
      }); 
     }); 

я редактировать код этим. это успешно работает, потому что я комментирую processdata: false, поэтому я получаю значение checkbox как сообщение в контроллере.

Смежные вопросы