我正在研究一个简单的codeigniter ajax表单验证。当这些字段为空时,我的代码显示正确的错误,但是当这些字段填充有值时,它仍显示为空的填充错误。
这是我的代码。
控制器:
class Jsondemo extends CI_Controller {
public function index()
{
$this->load->view('jsondemo_view');
}
public function check()
{
$name = $this->input->post('nm');
$password = $this->input->post('ps');
$this->load->library('form_validation');
$this->form_validation->set_rules('name','Name','required');
$this->form_validation->set_rules('password','Password','required');
if($this->form_validation->run()==false)
{
$errors = validation_errors();
echo json_encode(["error" => $errors,"status" => 0 //0 == false]);
}
else
{
echo json_encode(["success" => 'Record Check Successfully!',"status" => 1 // 1 == true]);
}
}
}
这是我的观点:
<form action="<?php echo base_url(); ?>jsondemo/check" method="post">
<div class="form-group">
<span class="alert alert-danger" style="display: none;"></span>
<span class="alert alert-success" style="display: none;"></span>
</div>
<div class="form-group ">
<label>Username</label>
<input type="text" name="name" class="form-control" id="nm">
<!-- <span class="text-danger"></span> -->
</div><br>
<div class="form-group">
<label>Password</label>
<input type="text" name="password" class="form-control" id="ps">
<!-- <span class="text-danger"></span> -->
</div>
<br>
<div class="form-group">
<input type="submit" value="Login" class="btn btn-primary" id="abc">
</div>
</form>
</div>
<script type="text/javascript">
$(document).ready(function(){
$('#abc').click(function(e){
e.preventDefault();
var name = $('#nm').val();
var password = $('#ps').val();
$.ajax({
type : 'POST',
url : 'jsondemo/check',
data : {nm : name, ps : password},
dataType : 'json',
success : function(d)
{
if(d.status == 1)
{
$('.alert-success').css('display', 'block');
$('.alert-danger').css('display', 'none');
$('.alert-success').html(d.success);
}
else
{
$('.alert-danger').css('display', 'block');
$('.alert-success').css('display', 'none');
$('.alert-danger').html(d.error);
}}});});});
</script>
您能帮我找到问题吗?
答案 0 :(得分:0)
使用form_open(“您的表单操作”)或form_open_multipart(“您的表单操作”)代替 表单标签。
在URL下方引用
https://www.codeigniter.com/userguide3/libraries/form_validation.html
答案 1 :(得分:0)
您的规则必须与您的$ _POST名称具有相同的名称...
因此,一种解决方法,也是我讨厌缩写的一种不好的解决方法,是更改规则中的字段名称以匹配您的表单。
即
$this->form_validation->set_rules('nm','Name','required');
$this->form_validation->set_rules('ps','Password','required');