CodeIgniter 2.1表单验证库不适用于ajax
我有一个表单,在提交时,如果有错误,它会返回一个错误,如果验证通过,它会将数据提交到DB表,并且工作正常 现在我想用ajax做同样的事情,但是验证似乎总是返回false,不管我是否输入了一些东西 我的控制器:CodeIgniter 2.1表单验证库不适用于ajax,ajax,validation,codeigniter,Ajax,Validation,Codeigniter,我有一个表单,在提交时,如果有错误,它会返回一个错误,如果验证通过,它会将数据提交到DB表,并且工作正常 现在我想用ajax做同样的事情,但是验证似乎总是返回false,不管我是否输入了一些东西 我的控制器: function add_new_category_ajax() { // make sure it's the admin, else redirect if ( ! $this->session->userdata('is_admi
function add_new_category_ajax()
{
// make sure it's the admin, else redirect
if ( ! $this->session->userdata('is_admin') ) {
redirect('admin/login');
exit();
}
// load form validation library
$this->load->library('form_validation');
// validate fields
$this->form_validation->set_rules('category_title', 'Category Title', 'trim|required');
// if validation failed
if ($this->form_validation->run($this) == FALSE)
{
// dummy var
$data['dummy'] = '';
// generate error message
$data['error'] = '<p class="errormsg">You must enter a category title.</p>';
// load the view
$this->load->view('new_category_view', $data);
}
else
// validation passed, add new category
{
// get category_title
$ct = $this->input->post('category_title');
// check if category title exists
$cte = $this->mdl_categories->category_title_exists($ct);
if ( $cte )
{
$data['msg'] = '<p class="errormsg">That category title already exists, please choose another.</p>';
}
else // it does not, proceed with insert
{
// prepare data
$data = array(
'title' => $ct
);
// add new page
$this->db->insert('categories', $data);
// show success message and add another page link
$flag = $this->db->affected_rows();
if ($flag == 1)
{
$data['msg'] = '<p class="successmsg">The category has been added!</p>';
$data['aac'] = '<br><p><a href='.base_url().'admin/add-new-category/>Add another category +</a></p>';
}
}
$data['msg'] = '<p class="successmsg">The category has been added!</p>';
// load the view
$this->load->view('new_category_view', $data);
} // end else
}
函数add\u new\u category\u ajax()
{
//确保是管理员,否则重定向
如果(!$this->session->userdata('is_admin')){
重定向(“管理员/登录”);
退出();
}
//加载表单验证库
$this->load->library('form_validation');
//验证字段
$this->form_validation->set_规则('category_title','category title','trim|required');
//如果验证失败
如果($this->form\u validation->run($this)==FALSE)
{
//虚拟变量
$data['dummy']='';
//生成错误消息
$data['error']='您必须输入类别标题。
;
//加载视图
$this->load->view('new\u category\u view',$data);
}
其他的
//验证通过,添加新类别
{
//获取类别名称
$ct=$this->input->post('category_title');
//检查类别标题是否存在
$cte=$this->mdl\u categories->category\u title\u exists($ct);
若有($cte)
{
$data['msg']='该类别标题已存在,请选择其他类别。
';
}
否则//如果没有,请继续插入
{
//准备数据
$data=数组(
“title”=>$ct
);
//添加新页面
$this->db->insert('categories',$data);
//显示成功消息并添加另一个页面链接
$flag=$this->db->受影响的_行();
如果($flag==1)
{
$data['msg']='类别已添加!
;
$data['aac']='
';
}
}
$data['msg']='类别已添加!
;
//加载视图
$this->load->view('new\u category\u view',$data);
}//结束其他
}
我的ajax:
$('body').on('click', 'a.submitnewcat', function(e) {
e.preventDefault();
// alert('code');return;
$('#ajaximg img').addClass('act');
setTimeout(function() {
$("#ajax").load('<?php echo site_url('admin/add-new-category-ajax'); ?>');
$('#ajaximg img').removeClass('act');
}, 200)
});
$('body')。在('click','a.submitnewcat',函数(e){
e、 预防默认值();
//警报(“代码”);返回;
$('ajaximg img').addClass('act');
setTimeout(函数(){
$(“#ajax”).load(“”);
$('#ajaximg img').removeClass('act');
}, 200)
});
链接到admin/addnewcategory ajax
不是一个错误,路由就是这样设置的
为什么它总是返回失败的验证?正如我在评论中所说的,您需要一个额外的参数来使
load
使用POST方法而不是GET方法:
$("#ajax").load('<?php echo site_url('admin/add-new-category-ajax'); ?>', { "category_title " : "myTitle" });
您没有发送
类别\u标题
。。。这就是它返回false的原因。你的意思是我应该在ajax中添加它作为参数还是什么?伙计,post方法在哪里?@simo我在示例中直接使用load。我现在使用post方法作为替代方法,但是我使用了自动验证功能,为了使表单验证
有效,您必须发送一个post方法,如果不起作用,我不知道如何使用实现。load
run方法默认不使用参数,然而,我使用的是HMVC方法,必须使用它。
if ($this->form_validation->run() == FALSE)