无法将输入值传递给控制器

时间:2019-09-05 07:27:18

标签: php jquery codeigniter

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

             <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;
      }

1 个答案:

答案 0 :(得分:0)

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

如果我假设您在发送数据之前先console.log,您会注意到这些变量没有被填充。您也可以在“标头”下查看开发工具,以查看是否发布了数据。

您需要遵循$('name=["empreqstat"]')

的内容

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

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

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