嗨伙计们,我只是想问为什么我的ajax请求确实得到一个FALSE字符串(它应该从控制器获取错误消息).
这是控制器的片段
function ajax_verify(){ $this->form_validation->set_rules('username','','max_length[25]|min_length[4]|trim|required|xss_clean'); $this->form_validation->set_rules('email','valid_email|required|trim|xss_clean'); if($this->form_validation->run()==FALSE){ $errors = $this->form_validation->error_array(); echo json_encode($this->form_validation->error_array()); }else{ echo "Success!"; } }
class MY_Form_validation extends CI_Form_validation{ function __construct(){ parent::__construct(); } function error_array(){ if(count($this->_error_array)===0){ return FALSE; }else{ return $this->_error_array; } } function get_tae(){ return "TAE!"; } }
并持续查看和jquery ajax代码(返回false而不是错误).
<!DOCTYPE HTML> <html> <head> <Meta charset="utf-8"> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.js"></script> <title>Title</title> <body> <?PHP //echo validation_errors('<div class="error">','</div>');?> <?PHP echo form_open('ajax/ajax_verify',array('id'=>'my_form'));?> <?PHP echo form_label('Username'); ?> <?PHP echo form_input('username',array('id' => 'username'));?> <?PHP echo form_label('Email Address'); ?> <?PHP echo form_input('email',array('id' => 'email')); ?> <?PHP echo form_submit('submit','Submit'); ?> <?PHP echo form_close();?> <script type="text/javascript"> $(function(){ $('#my_form').submit(function(e){ $.get('ajax_verify',function(data){ $('#contents').append(data); },'json') ; e.preventDefault(); }) }); </script>
试试这个.它会工作正常.
public function CreateStudents() { $this->load->helper('form'); $data['title'] = "Create Students Page"; $data['success'] = ""; $this->load->view('templates/header',$data); $this->load->view('createstudents',$data); $this->load->view('templates/footer',$data); } public function CreateStudentsAjax() { $this->load->helper('form'); $this->load->library('form_validation'); $this->form_validation->set_error_delimiters('',''); $this->form_validation->set_rules('roll','Roll Number','required'); $this->form_validation->set_rules('name','Name','required'); $this->form_validation->set_rules('phone','Phone','required'); if ($this->form_validation->run()) { $this->welcome_model->InsertStudents(); echo json_encode("Oks"); } else { $data = array( 'roll' => form_error('roll'),'name' => form_error('name'),'phone' => form_error('phone') ); echo json_encode($data); } }
在视图中添加表单和名为“mesage”的DIV
<div id="message"> </div> <?PHP echo form_open('welcome/CreateStudentsAjax'); ?> <label for="roll">Student Roll Number</label> <input type="text" id="txtRoll" value="" name="roll"/> <label for="Name">Students Name</label> <input type="text" id="txtName" value="" name="name"/> <label for="Phone">Phone Number</label> <input type="text" id="txtPhone" value="" name="phone"/> <input type="submit" name="submit" value="Insert New Students" /> <?PHP echo '</form>'; ?>
现在脚本包含
<script type="text/javascript"> $(document).ready(function(){ $('form').submit(function(){ //alert('ok'); $.ajax({ url:this.action,type:this.method,data:$(this).serialize(),success:function(data){ var obj = $.parseJSON(data); if(obj['roll']!=null) { $('#message').text(""); $('#message').html(obj['roll']); $('#message').append(obj['name']); $('#message').append(obj['phone']); } else { $('#message').text(""); $('#message').html(obj); } },erro:function(){ alert("Please Try Again"); } }); return false; }); }); </script>