1
我用書面方式笨如何驗證中使用的CodeIgniter形式form_validation數據用ajax
代碼提交AJAX
var formData = {};
var url = $(form_id).attr("action");
$(form_id).find("input[name]").each(function (index, node) {
formData[node.name] = node.value;
});
$(form_id).find('select[name]').each(function (index, node) {
formData[node.name] = node.value;
});
$(form_id).find('textarea[name]').each(function (index, node) {
formData[node.name] = node.value;
});
$.ajax({
type: "POST",
data: {
'formdata': formData
},
url: url,
dataType: 'json',
success: function(result) {
if (result.data) {
make_alert();
} else {
$('#error-msg').html(result.message);
}
},
error: function(result) {
// error code here
}
});
這將發送的數據formData
在控制器
增加功能
$this->load->helper(array('form', 'url'));
$this->load->library('form_validation');
$this->form_validation->set_rules('username', 'Username', 'required');
$this->form_validation->set_rules('password', 'Password', 'required',
array('required' => 'You must provide a %s.')
);
$this->form_validation->set_rules('email', 'Email', 'required');
,這部分在這裏收到formData
值
$post_data = $this->input->post('formdata');
$data = array (
'username' => $post_data['username'],
'email' => $post_data ['email'],
'password' => $post_data ['password']
);
,這部分運行驗證
if ($this->form_validation->run() == FALSE) {
$result['message'] = validation_errors();
} else {
$result['data'] = $this->ion_auth->register($data['identity'], $data['password'], $data['email'], $data['additional_data'], $data['group']);
}
這JSON
echo json_encode($result);
使用前阿賈克斯返回,代碼運行平穩沒有問題,但是當使用ajax時,驗證器返回一個消息,說明字段應該是要求,這意味着,它不會收到提交的表單數據。
這一部分,
$data = array (
'username' => $post_data['username'],
'email' => $post_data ['email'],
'password' => $post_data ['password']
);
使用上$data
var_dump()
時表明它收到用ajax提交的表單數據。
我的問題是,如何驗證這個$data
使用form_validation?
您將設置錯誤消息好像數據沒有內部'如果(result.data)' – claudios