【发布时间】: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