2017-04-24 66 views
1

我想将复选框的值发布到控制器使用ajax。但是我发送的数据在控制器中总是空的。阿贾克斯发布数据到控制器不工作,Codeigniter

my_view.php

<div class="regions"> 
         <label class="check-inline"> 
          <input type="checkbox" id="sangli" name="region[]" value="Sangli" class="category" 
            onclick="javascript:updateregion()" 
            > Sangli</label><br> 
         <label class="check-inline"> 
          <input type="checkbox" id="satara" name="region[]" value="Satara" class="category" 
            onclick="javascript:updateregion()" 
           >Satara</label><br> 
         <label class="check-inline"> 
          <input type="checkbox" id="kolhapur" name="region[]" value="Kolhapur" class="category" 
            onclick="javascript:updateregion()" 
           >Kolhapur</label><br> 
         <label class="check-inline"> 
          <input type="checkbox" id="solapur" name="region[]" value="Solapur" class="category" 
            onclick="javascript:updateregion()" 
            >Solapur</label><br> 
          <input type="hidden" name="filterbyregion" id="filterbyregion"> 
         <script type="text/javascript"> 
          function updateregion() { 
           $("#sangli").change(function() { 
             if($(this).prop("checked")) { 
              var textbox = $(this).val(); 
              document.getElementById("filterbyregion").value = textbox; 
              //document.filters.submit(); 
              alert(textbox); 
              jQuery.ajax({ 
               url: '<?php echo site_url();?>resource_controller/view_div', 
               type: 'POST', 
               cache: false, 
               data: {"filterbyregion": textbox}, 
               dataType: 'text', 
               success: function() { 
                alert(textbox); 
                $('#filter_div').load('<?php echo site_url();?>resource_controller/view_div'); 
               }, 
               error: function(error) { 
                console.log(error); 
                alert(error); 
               } 
              }); 
             } 
            }); 
            $("#satara").change(function() { 
             if($(this).prop("checked")) { 
              var textbox = $(this).val(); 
              document.getElementById("filterbyregion").value = textbox; 
              //document.filters.submit(); 
              alert(textbox); 
              jQuery.ajax({ 
               url: "<?php echo site_url();?>resource_controller/view_div", 
               type: "POST", 
               cache: false, 
               data: {"filterbyregion": $("#sangli").val()}, 
               dataType: "text", 
               success: function() { 
                alert(textbox); 
                $('#filter_div').load('<?php echo site_url();?>resource_controller/view_div'); 
               }, 
               error: function(error) { 
                console.log(error); 
                alert(error); 
               } 
              }); 
             } 
            }); 
            $("#kolhapur").change(function() { 
             if($(this).prop("checked")) { 
              var textbox = $(this).val(); 
              document.getElementById("filterbyregion").value = textbox; 
              //document.filters.submit(); 
              alert(textbox); 
              jQuery.ajax({ 
               url: '<?php echo site_url();?>resource_controller/view_div', 
               type: 'POST', 
               cache: false, 
               data: {"filterbyregion": textbox}, 
               dataType: 'text', 
               success: function() { 
                alert(textbox); 
                $('#filter_div').load('<?php echo site_url();?>resource_controller/view_div'); 
               }, 
               error: function(error) { 
                console.log(error); 
                alert(error); 
               } 
              }); 
             } 
            }); 
            $("#solapur").change(function() { 
             if($(this).prop("checked")) { 
              var textbox = $(this).val(); 
              document.getElementById("filterbyregion").value = textbox; 
              //document.filters.submit(); 
              alert(textbox); 
              jQuery.ajax({ 
               url: '<?php echo site_url();?>resource_controller/view_div', 
               type: 'POST', 
               cache: false, 
               data: {"filterbyregion": textbox}, 
               dataType: 'text', 
               success: function() { 
                alert(textbox); 
                $('#filter_div').load('<?php echo site_url();?>resource_controller/view_div'); 
               }, 
               error: function(error) { 
                console.log(error); 
                alert(error); 
               } 
              }); 
             } 
            }); 
</script> 
</div> 

My_controller.php

public function view_div() { 
     $rgn = str_replace(",", "','", $this->input->post('filterbyregion')); 
     $rank = str_replace(",", "','", $this->input->post('ranking')); 
     $exp = str_replace(",", "','", $this->input->post('selexperiance')); 
     $qual = str_replace(",", "','", $this->input->post('qualification')); 
     $sk = str_replace(",","','", $this->input->post('multiskills')); 
     if($rgn != ""){ 
     $this->q['h'] = $this->resource_model->search_users($sk,$rgn,$qual,$exp,$rank); 
     $this->q['state'] = $this->place_model->get_state(); 
     $this->q['district'] = $this->place_model->get_district(); 
     $this->q['taluka'] = $this->place_model->get_taluka(); 
     $this->q['courses'] = $this->course_model->get_all_course_names(); 
      if(isset($this->q['h']) && $this->q['h']->num_rows() > 0) 
      { 
        $this->load->view('/web/filtered_resources', $this->q); 
      } 
     } 
     return array(); 
    } 

我的div是越来越加载,但它是没有预期的结果数据。

下面是我之前尝试的另一个脚本。这可能会澄清我的目的:

<script type="text/javascript"> 
         $.noConflict(document).ready(function() { 
          var textbox = ""; 
          var rgns = []; 
         if(document.getElementById('sangli').checked) { 
          if (textbox == "") { 
           textbox += "Sangli"; 
          } else { 
           textbox += ", Sangli"; 
          } 
          rgns.push('sangli'); 
          } 
          if(document.getElementById('satara').checked) { 
           if (textbox == "") { 
           textbox += "Satara"; 
          } else { 
           textbox += ", Satara"; 
          } 
          rgns.push('satara'); 
          } 
          if(document.getElementById('kolhapur').checked) { 
           if (textbox == "") { 
           textbox += "Kolhapur"; 
          } else { 
           textbox += ", Kolhapur"; 
          } 
          rgns.push('satara'); 
          } 
          if(document.getElementById('solapur').checked) { 
           if (textbox == "") { 
           textbox += "Solapur"; 
          } else { 
           textbox += ", Solapur"; 
          } 
          rgns.push('satara'); 
          } 
          document.getElementById('filterbyregion').value = textbox; 
          // document.filters.submit(); 
          jQuery.ajax({ 
           url: '<?php echo site_url();?>resource_controller/view_div', 
           type: "POST", 
           data: {"txt": textbox}, 
           success: function() { 
          $('#filter_div').load('<?php echo site_url();?>resource_controller/view_div'); 
           }, 
           error: function(error) { 
            console.log(error); 
           } 
          }); 
         }); 
        </script> 
+0

你是不是想多选中的复选框值传递给位指示? –

+0

是的,我将该值分配给文本框字段,然后将其传递给控制器​​。 – Nutan

+0

是否有任何特殊目的将其分配给隐藏字段? –

回答

1

我无法完全弄清楚你正在尝试做什么。它看起来像这样的东西: $(“#sangli”)。change(function(){ });

您正在尝试分配事件侦听器,但将其放入名为updateregion()的函数中,当您单击该复选框时会调用它。

我认为你需要将.change()函数移到你的updateregion函数之外。尽管如此,我真的不知道你在做什么。

我的Web控制台告诉我,没有定义的updateregion()函数,所以也许你希望把你的文件的开头是JS,把它放在这里面:

$(document).ready(function(){ 
    //assign event listeners here 
}); 

这将确保在文档完全加载之前不会发生任何事情。否则,您的JavaScript的一部分可能会在整个页面加载之前执行。

使用Firefox和工具 - > Web开发人员 - > Web控制台,您将获得更多信息。另外,请检查你的php错误日志,通常在/var/log/apache2/error.log。在linux中,你可以使用“tail -f error.log”命令来查看最后20行左右。

如果事情正在这里丢了,我也不会感到惊讶: $这个 - >输入 - >后( 'filterbyregion')

为什么不干脆$ _ POST [ 'filterbyregion']?

如果您没有尝试在一行中执行许多不同的操作,而只是执行一个操作,那么解析错误实际发生的位置会比较容易。

+0

我想根据选中的复选框筛选我的结果。复选框'sangli将过滤我的数据为桑利地区等。我已经尝试使用$文档。ready(function(){// my code}但是它不起作用 – Nutan

1

试试这个代码

<div class="regions"> 
<label class="check-inline"> 
<input type="checkbox" id="sangli" name="region[]" value="Sangli" class="category" 
> Sangli</label><br> 
<label class="check-inline"> 
<input type="checkbox" id="satara" name="region[]" value="Satara" class="category" 

    >Satara</label><br> 
<label class="check-inline"> 
<input type="checkbox" id="kolhapur" name="region[]" value="Kolhapur" class="category" 

    >Kolhapur</label><br> 
<label class="check-inline"> 
<input type="checkbox" id="solapur" name="region[]" value="Solapur" class="category" 

     >Solapur</label><br> 
<input type="hidden" name="filterbyregion" id="filterbyregion"> 

<script 
src="https://code.jquery.com/jquery-3.2.1.min.js" 
integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" 
crossorigin="anonymous"></script> 
<script type="text/javascript"> 

    $(".category").change(function() { 

       var textbox = $(this).val(); 
       //document.getElementById("filterbyregion").value = textbox; 
       $('#filterbyregion').val(textbox); 

       /*Fetching multi value from checkbox*/ 
       var data1 = []; 
       $(":checked").each(function() { 
        data1.push($(this).val()); 
       }); 
       console.log(data1); 
       //document.filters.submit(); 
       //alert(data1); 
       $.ajax({ 
        url: 'resource_controller/view_div', 
        type: 'POST', 
        cache: false, 
        data: {"filterbyregion": data1}, 
        dataType: 'text', 
        success: function(data) { 
         alert(data); 
         /*$('#filter_div').load('<?php echo site_url();?>resource_controller/view_div');*/ 
        }, 
        error: function(error) { 
         console.log(error); 
         alert(error); 
        } 
       }); 

     }); 
    </script> 

在控制器:

public function view_div() { 
    /*Array of checked checkbox value*/ 
    $rgn = $this->input->post('filterbyregion'); 
    print_r($rgn); 

} 
+0

Hi Ahmed,感谢您的快速响应!我试过了给定的代码,但它不起作用,既没有提供任何错误也没有显示任何东西。 – Nutan

+0

Are you sure ajax request is firing to controller? –

+0

Ajax request is not firing controller for your given code。 – Nutan