首页 > 解决方案 > 无法将输入值传递给控制器

问题描述

我的代码有问题。我无法将输入值传递给控制器​​。所以,我有一个选择框。我们在选择框中选择的数字将生成将显示多少个表单。因此,如果我在选择框中选择 3,则相同的表单将出现 3 次。而且,当我提交表单以保存数据时,在将数据插入数据库之前控制它的 var_dump(),我得到数组 (0){},这意味着 null。谁能帮我?以及如何在同一个数据库中同时插入多行?谢谢你

             <label for="sel1">Jumlah permintaan rekrut karyawan : 
               </label>
          <select class="form-control" name="sel1" id="sel1" >
        <option selected>Pilih</option>
        <option value="1">1</option>
         <option value="2">2</option>
        <option value="3">3</option>
        </select>
        </div>
        <button id="btn" type="button" class="btn waves-effect waves-light btn-primary">Primary</button></div>
                        </form>
                    </div>
                </div>
            </div>    
        </div>
        </div>
        <div style="width:100%;height:100%;position:absolute;vertical-align:middle;text-align:center;">
            <button type="button" id="btn-submit" style="display: none; margin: auto;" class="btn waves-effect waves-light btn-primary" data-toggle="modal" data-target="#myModal">Request</button>
        </div>

        <div class="modal fade" id="myModal" role="dialog">
        <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
              <button type="button" class="close" data-dismiss="modal">&times;</button>
            </div>
            <div class="modal-body">
              <p align="center">Are you sure you want to request ?</p>
            </div>
            <div class="modal-footer">
                <button type="button" id="button-smt" class="btn btn-primary mr-auto" onclick="window.location.href='<?php echo site_url('hire/submit_hire'); ?>'">Yes</button>
                <button type="button" class="btn btn-secondary" data-dismiss="modal">No</button>
            </div>
          </div>
      </div>
    </div>
    </body>
    <script type="text/javascript">
      $(document).ready(function(){
   $('#sel1').on('change', function(event) {
       initForms($(this).val());
    });
    $('body').on('click', '.btn', function(){
        $('.form-horizontal').each(function(){
           $(this).show();
           $('#btn-submit').show();

        });

    });
});
$('#button-smt').click(function(e){  
   event.preventDefault();
   alert('test');
   alert($('#empreqstat').val());
   /* $.ajax function will go here to save row */
   $.ajax({
        type: "POST",
        url: "<?php echo base_url('hire/submit_hire');?>",
        data: {empreqstat : $('#empreqstat').val(), position : $('#position').val(),empstat : $('#empstat').val(), Education : $('#Education').val() , Experience: $('#Experience').val(),jobdesc : $('#jobdesc').val() },
          dataType:'json',
        success:function(data){
        error:function(){
            alert('data gagal disimpan');
          }
      });
});

function initForms(formCount){
    var finalHTML= "";
    for(i=0; i<formCount; i++){
        var tempHTML ='<div class="card"><form id="$formid$" action="<?php echo base_url('hire/submit_hire');?>" method="POST" class="form-horizontal striped-rows b-form" style="display:none;"><div class="card-body"><h4 class="card-title">Rekrut Karyawan'+(i+1)+' </h4><div class="form-group row"><div class="col-sm-3"><label class="control-label col-form-label">Employee Request Status</label></div><div class="col-sm-9"><select class="form-control" name="empreqstat" id="empreqstat" ><option selected>Pilih</option><option value="Replacement">Replacement</option><option value="Add">Add</option></select></div></div></div></form></div>';
         tempHTML = tempHTML.split("$formid$").join("form-" + i);
        finalHTML += tempHTML;
    }

    $('.form-container').empty().html(finalHTML);
}

我的控制器:

      public function submit_hire(){
      $this->form_validation->set_rules('empreqstat', 'empreqstat', 'required');
      var_dump($_POST);exit;
      }

标签: phpjquerycodeigniter

解决方案


$('empreqstat').val()不是一个有效的选择器。

如果我想如果您console.log在发送数据之前您会注意到这些变量没有被填充。您还可以在“标题”下的开发工具中查看请求以查看已发布的数据。

你需要一些类似的东西$('name=["empreqstat"]')

但是,这种方法的问题是您有多个具有相同输入字段名称的表单。

所以现在你必须更具描述性。

$("#submit").click(function(){
    var form = $(this).parents('form:first');
    console.log($("input[name='somename']",form).val());
});

推荐阅读