【发布时间】:2014-12-22 03:37:01
【问题描述】:
我正在为我的 Web 应用程序开发管理面板。会员管理部分的索引是最新会员帐户的列表。每个成员都有一个复选框,管理员可以选中该复选框以一次删除多个用户。我使用 jQuery 提交带有链接的表单。由于表单在成员管理部分(成员/主页)的索引上,我希望表单的过程在成员/删除上。当访问成员/删除控制器时,可以选择在 URL 段中提供单个成员 ID,或者管理员可以使用成员索引页面上的表单。
我的问题是复选框中的所有数据都没有传递给成员/删除控制器。我试过 $this->input->post('delete_members') 和 $_POST['delete_members']。我还尝试将表单的方法更改为 GET,然后更改为 $_GET['delete_members']。我得到“未定义的索引:delete_members 我尝试的一切。有什么想法吗?
PS:我有一条将 members/delete 更改为 members/home/delete 的路由
成员控制器:(成员/家庭)
<?php
class Home extends MY_Controller {
function __construct(){
parent::__construct();
}
function index($page = 1){
$this->template->overall_header("Manage Members", array(), array(libs_url('jquery-datatables/extensions/TableTools/css/dataTables.tableTools.css'), libs_url('jquery-datatables/css/dataTables.bootstrap.css')));
$this->load->library('pagination');
$data['member_results'] = $this->member->result_array($this->admin['results_per_page'], $page);
$config = array(
'base_url' => site_url('members/'),
'total_rows' => $this->member->total_rows,
'per_page' => $this->admin['results_per_page'],
'use_page_numbers' => TRUE,
'full_tag_open' => '',
'full_tag_close' => '',
'first_link' => '<i class="fa fa-angle-double-left"></i>',
'first_tag_open' => '<li>',
'first_tag_close' => '</li>'.PHP_EOL,
'last_link' => '<i class="fa fa-angle-double-right"></i>',
'last_tag_open' => '<li>',
'last_tag_close' => '</li>\n',
'next_link' => '<i class="fa fa-angle-right"></i>',
'next_tag_open' => '<li>',
'next_tag_close' => '</li>'.PHP_EOL,
'prev_link' => '<i class="fa fa-angle-left"></i>',
'prev_tag_open' => '<li>',
'prev_tag_close' => '</li>'.PHP_EOL,
'cur_tag_open' => '<li class="active"><a href="">',
'cur_tag_close' => '</a></li>'.PHP_EOL,
'num_tag_open' => '<li>',
'num_tag_close' => '</li>'.PHP_EOL,
'cur_page' => $page,
'uri_segment' => 2
);
$this->pagination->initialize($config);
$data['pagination'] = $this->pagination->create_links();
$this->load->view('members/index_body', $data);
}
function delete($member_id = ''){
/* If a member id wasn't provided in the URL, look for the array of checkboxes */
if($member_id == ''){
if(count($_POST['delete_members']) > 0){
foreach($_POST['delete_members'] as $id){
$this->member->delete($id);
}
if($this->member->error == NULL){
$this->template->overall_header("Request Processed");
$data = array(
'error_title' => 'Request Processed',
'error_message' => 'The members you have requested have been deleted from the database.',
'redirect' => 'members'
);
$this->load->view('error_body', $data);
} else {
$this->template->overall_header("System Error");
$data = array(
'error_title' => "System Error",
'error_message' => $this->member->error,
'redirect' => 'members'
);
$this->load->view('error_body', $data);
}
} else {
$this->error->title('No Members Selected')->message('You did not select any members to delete!')->redirect('members')->display();
}
} else {
$this->member->delete($member_id);
if($this->member->error == NULL){
$this->template->overall_header("Request Processed");
$data = array(
'error_title' => "Request Processed",
'error_message' => 'The member you requested has been deleted from the database.',
'redirect' => 'members'
);
$this->load->view('error_body', $data);
} else {
$this->template->overall_header("System Error");
$data = array(
'error_title' => "System Error",
'error_message' => $this->member->error,
'redirect' => 'members'
);
$this->load->view('error_body', $data);
}
}
}
形式:
if(count($member_results) > 0){
$i = 0;
$str .= '
<div class="table-responsive">
'.form_open('members/delete', 'id="delete" role="form"').'
<table class="table table-striped" data-sortable">
<thead>
<tr>
<th></th>
<th>Display Name</th>
<th>Email</th>
<th>Join Date</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
';
foreach($member_results as $member){
$str .= '
<tr>
<td><input type="checkbox" name="delete_members[]" value="'.$member['id'].'"></td>
<td>'.anchor('members/modify/'.$member['id'], $member['display_name']).'</td>
<td>'.$member['email_address'].'</td>
<td>'.$member['date_joined'].'</td>
<td>
<div class="btn-group btn-group-xs">
'.anchor('members/modify/'.$member['id'], '<i class="fa fa-pencil-square"></i>', 'data-toggle="tooltip" title="Modify '.$member['display_name'].'" class="btn btn-danger"').'
'.anchor('members/delete/'.$member['id'], '<i class="fa fa-eraser"></i>', ' data-toggle="tooltip" title="Delete '.$member['display_name'].'" class="btn btn-danger"').'
</div>
</td>
</tr>
';
}
$str .= '
</tbody>
</table>
'.form_close().'
</div>
<div class="data-table-toolbar">
<ul class="pagination">
'.$pagination.'
</ul>
</div>
';
}
$str .= '<script>
$(\'#submit-delete\').on(\'click\', function(e){
if($(\'input[type="checkbox"][name="delete_members[]"]:checked\').length > 0){
$(\'#delete\').submit();
} else {
alert(\'You did not select any members to delete!\');
e.preventDefault();
}
}); ';
echo $str;
【问题讨论】:
-
jQuery 提交代码和重定向在哪里?无法使用 javascript 重定向到需要发布数据的页面
-
在表单底部的JS标签$('#delete').submit()
标签: php jquery forms codeigniter