使用ajax进行php codeigniter表单验证失败
我正在尝试验证表单并将其保存在数据库中。我正在使用codeigniter的验证库,但它失败了 这是视图中的ajax函数使用ajax进行php codeigniter表单验证失败,php,ajax,codeigniter,validation,Php,Ajax,Codeigniter,Validation,我正在尝试验证表单并将其保存在数据库中。我正在使用codeigniter的验证库,但它失败了 这是视图中的ajax函数 function save_form(){ $.ajax({ url: '/projects/cafe/index.php/welcome/save_form', type: 'post', data: {'fname' : $('#fname').val(), 'lname' : $
function save_form(){
$.ajax({
url: '/projects/cafe/index.php/welcome/save_form',
type: 'post',
data: {'fname' : $('#fname').val(),
'lname' : $('#lname').val(),
'story_name' : $('#story_name').val(),
'email' : $('#email').val(),
'address_street' : $('#address_street').val(),
'city' : $('#city').val(),
'state' : $('#state').val(),
'zip' : $('#zip').val(),
'phone1' : $('#phone1').val(),
'phone2' : $('#phone2').val(),
'phone3' : $('#phone3').val(),
'age_18' : $('#age_18').val(),
'ci_csrf_token' : $('input[name=ci_csrf_token]').val()},
success: function(data, textStatus, jqXHR){
//Redirect user to next page here...
if(data == '1'){
location.href = 'http://www.voltage.com/projects/cafe/index.php/welcome/create4';
}else{
alert('form save failed');
}
},
error: function(jqXHR, textStatus, errorThrown){
console.log('error: '+jqXHR);
console.log(textStatus);
console.log(errorThrown);
}
});
}
这是我的控制器中的函数
class Welcome extends MY_Controller {
public function save_form(){
$this->load->helper(array('form', 'url'));
$this->load->library('form_validation');
$this->form_validation->set_rules('fname', 'First Name', 'required|min_length[6]|max_length[12]');
$this->form_validation->set_rules('lname', 'Last Name', 'required');
$this->form_validation->set_rules('story_name', 'Story Name', 'required');
$this->form_validation->set_rules('email', 'email', 'required');
$this->form_validation->set_rules('address_street', 'Street Address', 'required');
$this->form_validation->set_rules('city', 'City', 'required');
$this->form_validation->set_rules('state', 'State', 'required');
$this->form_validation->set_rules('zip', 'Zip', 'required');
$this->form_validation->set_rules('phone1', 'Area Code', 'required');
$this->form_validation->set_rules('phone2', 'Phone Number', 'required');
$this->form_validation->set_rules('phone3', 'Phone Number', 'required');
$this->form_validation->set_rules('age_18', 'Age Verification', 'required');
if($this->form_validation->run() == FALSE)
die();
$this->load->model('user');
$results = $this->user->save_form($this->session->userdata('fbid'),
$this->input->post());
echo $results;
}
我所困惑的是,如果$this->form\u validation->run==FALSE没有任何phone1、phone2或phone3的值,那么它们是如何传递的,这是必需的
$this->form_validation->set_rules('phone1', 'Area Code', 'required');
$this->form_validation->set_rules('phone2', 'Phone Number', 'required');
$this->form_validation->set_rules('phone3', 'Phone Number', 'required');
这是发送到服务器的内容fname=First&lname=Last&story\u name=Your+story&email=yourname%40domain.com&address\u street=street&city=city&state=state&zip=zip&phone1=&phone2=&phone3=&age\u 18=我一直在关注这个问题,不明白为什么它不起作用。当其他字段被省略时,您是否也会遇到意外行为,或者是否严格限制为这3个字段?我所看到的唯一奇怪的事情,可能是阻止表单验证库正确加载,是
<?=fname?>
你要通过这条线:
$this->form_validation->set_rules('<?=$fname?>', 'First Name', 'required|min_length[6]|max_length[12]');
我已经更改了它,如果我省略了所有字段,它的fname不是验证通过的错误吗?当php脚本运行时,它的输出是什么?它是否将表单保存在数据库中并立即返回1?