使用jquery.load在codeigniter中使用ajaxvalidation失败后填充表单

我用jquery ajax看过很多表单validation教程。 我发现同样的事情,所有只是告诉只有成功的表格validation。 如果服务器端validation失败,我需要找到如何显示错误。 换句话说,当我们提交没有ajax的表单时,表单会重新填充错误消息并且输入填充了用户提供的内容。 在这个方法中,我们使用了一些很棒的php函数,比如form_prep。 这是视图代码。

 '', 'id' => 'login'); echo form_open(SITE_URL.'user/insertUser', $attributes); ?> 

<input type="text" name="username" maxlength="255" value="input->post('username'));?>" />

<input type="text" name="first_name" maxlength="255" value="input->post('first_name'));?>" />

<input type="text" name="last_name" maxlength="255" value="input->post('last_name')); ?>" />

<input type="text" name="password" maxlength="255" value="input->post('password')); ?>" />

<input type="text" name="email" maxlength="255" value="input->post('email')); ?>" />

你可以在这里看到使用form_prep($ this-> input-> post(’username’)),它有助于解决安全问题。 但是当我使用相同的表单在失败的validation时重新填充ajax时,它不会显示错误,也不会填充输入框。 而是加载表单,就好像这是第一次加载它一样。 这是我如何使用它与ajax。

首先在div中我正在加载表单

 $('#userform').load('load->view('user_form')?>'); 

现在ajax

 $(function() { $('#login').submit(function() { $.ajax( { type : 'POST', data : $(this).serialize(), url : $(this).attr('action'), success : function(data) { if(data == 1) { // do something } else { $('#userform').load('load->view('user_form')?>'); } } }); return false; }); }); 

最后我的控制器

 function insertUser() { if($this->form_validation->run() == FALSE) { echo 0; }else{ echo 1; } } 

我要做的是在控制器中渲染表单而不是

 echo 0; just do $html = $this->load->view('user_form',true); echo $html; 

并在ajax函数中替换

 else { $('#userform').load('load->view('user_form')?>'); } 

 else { $('#userform').html(data); }