codeigniter csrf在select选项中不起作用

时间:2016-01-16 04:37:49

标签: javascript php ajax codeigniter csrf

我想用select选项进行步进输入,在这种情况下,我做3步,当选择第一个选项然后将显示下一个选项2,然后选项3.我使用ajax并且我设置$ config ['csrf_protection' ] = TRUE;在Codeigniter配置文件中。在第一个选择选项(#kategori)工作并在第二个选择选项中显示下一个值,但在步骤3中选择选项(javascript的#sub1或secon函数)不起作用。谢谢。

这是我的观点:

<?php echo form_open_multipart('',array('class'=>'form-horizontal'));?>
<?php echo form_label('Kategori','id_kategori',array('class'=>'col-sm-2 control-label'));?>
 <select id="kategori" name="id_kategori">
  <option value=""></option>
    <?php
     foreach($kategori as $kategori_umum)
      {
       echo '<option value='.$kategori_umum->id.'>'.$kategori_umum->nama_kategori.'</option>';
      }
    ?>
 </select>
 <select id="sub1" name="id_kategori_sub1"> //step 2
    <option value=""></option>
 </select>
 <select id="sub2" name="id_kategori_sub2"> //step 3
    <option value=""></option>
 </select>

Ajax:

<script type="text/javascript">
$('#kategori').change(function(){
var kategori_id = $('#kategori').val();
    //alert(state_id);
if (kategori_id != ""){
    var post_url = "<?php echo base_url();?>masuk/produk/get_sub1";
    $.ajax({
        type: "POST",
        url: post_url,
        data: {'<?php echo $this->security->get_csrf_token_name(); ?>':'<?php echo $this->security->get_csrf_hash(); ?>','kategori_id':kategori_id},
        dataType: 'json',
        success: function(kategori_sub1, dataType) //calling the response json array 'kategori_sub1'
        {
            $('#sub1').empty();
            $('#sub1').show();
            $.each(kategori_sub1,function(id,sub1) 
            {
                var opt = $('<option />'); // creating a new select option for each group
                opt.val(id);
                opt.text(sub1);
                $('#sub1').append(opt);
                $('#sub2').hide();

            });
        },
        error:function(xhr)
            {
                alert("Terjadi Kesalahan");
            }
     }); //end AJAX
} else {
    $('#sub1').empty();
    $('#sub2').empty();
}});

$('#sub1').mouseout(function(){
var sub1_id = $('#sub1').val();
if (sub1_id != ""){
    var post_url = "<?php echo base_url();?>masuk/produk/get_sub2";
    $.ajax({
        type: "POST",
        url: post_url,
        data: {'<?php echo $this->security->get_csrf_token_name(); ?>':'<?php echo $this->security->get_csrf_hash(); ?>','sub1_id':sub1_id},
        dataType: 'json',
        success: function(kategori_sub2, dataType)
        {
            $('#sub2').empty();
            $('#sub2').show();
            $.each(kategori_sub2,function(id,sub2) 
            {
                var opt = $('<option />');
                opt.val(id);
                opt.text(sub2);
                $('#sub2').append(opt); 
            });
        },
        error:function(xhr)
            {
                alert("Kesalahan");
            }
     }); //end AJAX
}});</script>

1 个答案:

答案 0 :(得分:0)

我怀疑您的问题是使用了错误的事件mouseout

你应该使用change,就像第一个有效的方式一样。

除此之外,还需要通过浏览器开发工具检查实际请求的更多信息