【问题标题】:How to send customer popup value in the controller如何在控制器中发送客户弹出值
【发布时间】:2018-07-01 17:46:06
【问题描述】:

我正在使用 CodeIgniter。我在查看页面上有一个查看按钮。如果有人点击它,则会打开一个自定义弹出窗口,它会要求反馈并批准。另外,我在此弹出窗口中设置了隐藏的输入类型。填写表单后,用户将点击提交按钮。

但我没有得到控制器中的值,而是得到隐藏的输入值。

查看

<?php echo form_open('Employee_control/admin_action_leave','id="admin_action_leave"'); ?>
<a href="javascript:void(0);" class="table_icon view" onclick="openPopup(this)" data-id="2"> View </a>
<div class="view_popup_profile"  id="popup-2" style="display: none;">
  <div class="opacity"></div>
  <div class="profile_content">
    <div class="profile_header clearfix">
      <div class="profile_header_right">
        <input type="hidden" name="roster_id_send" id="roster_id_send" value="2">
            <select name="admin_approved_status" id="admin_approved_status">
              <option value="" disabled selected>Status</option>
              <option value="1">Approved</option>
              <option value="0">Pending</option>
              <option value="-1">Reject</option>
            </select>
            <?php echo form_error('admin_approved_status'); ?>
      </div>
    </div>
    <div class="profile_body">
      <div class="row">
        <div class="col-md-6 text_area_box">
          <div class="admin_feedback">
            <h3>Feedback</h3>
            <textarea class="form_control" name="admin_feedback" id="admin_feedback"></textarea>
             <?php echo form_error('admin_feedback'); ?>
            <button type="submit" class="btn">Submit</button>
          </div>
        </div>
      </div>
    </div>
    <div class="profile_footer">
      <a href="javascript:void(0);" class="table_icon close_popup" onclick="closePopup(this)" data-id="2">Close</a> 
    </div>
  </div>
</div>
<?php echo form_close(); ?>

控制器

 public function admin_feedback_leave(){
      echo $admin_approved_status=$this->input->post('admin_approved_status');
      echo $admin_feedback=$this->input->post('admin_feedback');
      echo $roster_id_send=$this->input->post('roster_id_send');
 }

我尝试使用 ajax instated of form 我遇到了同样的问题。它只显示中间值

$("#admin_action_leave").validate({
        // Specify the validation rules
        rules: {
            admin_approved_status:{
              required:true
            },
            admin_feedback:{
              required:true,
              minlength:15,
              maxlength:250
            }      

          },
         submitHandler: function(form) {
          //form.submit();
         //var a= document.getElementById("admin_approved_status").value;
         //alert(a);
          var admin_approved_status = $('#admin_approved_status').val();
          var admin_feedback = $('#admin_feedback').val();
          var roster_id_send = $('#roster_id_send').val();
         // alert(admin_feedback);
          //alert(roster_id_send);
          //alert(admin_approved_status);
         $.ajax({
                 url: baseUrl + "/Employee_control/admin_feedback_leave",
                 method: "POST",
                 data: {
                    admin_approved_status: admin_approved_status,
                    admin_feedback:admin_feedback,
                    roster_id_send:roster_id_send
                 },
               success: function(data)
                 {
                    alert(data);
                 }
             }); //AJAX
         }

    });

实现代码后。我只是分享一小部分代码。

我的问题是我无法将数据发送到控制器。我尝试了两种方式,一种是使用 ajax,另一种是使用表单提交。我正在分享表单提交代码。

当我添加以下代码时,它不会将数据发送到控制器。如果我删除 if 和 foreach 条件,那么我会得到输出。

     <?php $n=1; if(isset($admin_data_leave)){foreach ($admin_data_leave as $row) {?> 
<!--some html code here-->
    <?php $n++;}}else{echo "No data found";}?>

完整代码

<?php echo form_open('Employee_control/admin_feedback_leave', 'id="admin_action_leave"'); ?>
<table cellspacing="0" class="applied_leave_list_table">
    <tbody>
        <?php
        $n = 1;
        if (isset($admin_data_leave)) {
            foreach ($admin_data_leave as $row) {
                ?> 
                <tr>
                    <td><?php echo $n; ?></td>

                    <td><a href="javascript:void(0);" class="table_icon view" onclick="openPopup(this)" data-id="<?= $row->roster_id; ?>"> View </a></td>
                </tr>
            <div class="view_popup_profile"  id="popup-<?= $row->roster_id; ?>" style="display: none;">
                <div class="profile_content">
                    <div class="profile_header_right">
                        <input type="hidden" name="roster_id_send" id="roster_id_send" value="<?php echo $row->roster_id; ?>">
                    </div>
                </div>
                <h3>Admin Feedback</h3>
                <textarea class="form_control" name="admin_feedback" id="admin_feedback"></textarea>
                <?php echo form_error('admin_feedback'); ?>
                <button type="submit" class="btn">Submit</button>
            </div>
            <?php
            $n++;
        }
    } else {
        echo "No data found";
    }
    ?>
</tbody>
</table>
<?php echo form_close(); ?>

Jquery 验证

$('#admin_action_leave').each( function(){
    var form = $(this); 
    form.validate({
        rules: {
            admin_approved_status:{
              required:true
            },
            admin_feedback:{
              required:true,
              minlength:15,
              maxlength:250
            } 
            }     
    });
});

【问题讨论】:

  • 表单操作中的方法名不匹配应该是admin_feedback_leave而不是admin_feedback
  • 在这里测试了你的表单工作正常,你的代码一定有问题
  • 您的帖子名称是正确的 - 除了所述的方法名称不匹配之外,我没有看到任何问题,但您似乎得到的不是 404,所以这可能只是一个错字。这也是模态窗口还是单独的窗口?
  • @pradeep,这是我的错,我更新了方法名称,但仍然是同样的问题。我只得到隐藏在弹出窗口中的输入值。
  • @Alex,这只是模态的,

标签: php jquery codeigniter


【解决方案1】:

当我添加以下代码时,它不会将数据发送到 控制器。 如果我删除 if 和 foreach 条件,那么我会得到 输出

...这意味着变量$admin_data_leave 的内容不满足条件,即。要么是未设置未定义),要么是不是可遍历的对象,要么是它是空的

尝试将以下代码放在条件之前并查看输出...

echo "<pre>";
var_dump($_POST);
echo "</pre>";
die();

【讨论】:

  • 我在 if (isset($admin_data_leave)) 之前添加了您的代码,当我刷新页面时,我得到了输出数组(0){}
  • 所以这意味着你的数组是空的,你需要检查那个变量的来源,以及它是否被正确填充。
  • 最后,我找到了答案,我在 foreach 中添加了表单标签,然后我没有得到 POST 数据。我尝试使用 的按钮,它正在工作。
  • 如果我在 foreach 之外添加表单标签,那么我的 jquery 验证工作正常,但发布数据不工作。在 foreach 中添加表单标签后,我的帖子数据正在工作,但 jquery 验证不起作用。任何的想法?我在问题中添加了 jquery 验证。
猜你喜欢
  • 2021-08-06
  • 2014-11-25
  • 1970-01-01
  • 1970-01-01
  • 2011-06-26
  • 2016-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多