2016-05-12 90 views
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'] 
); 

使用上$datavar_dump()時表明它收到用ajax提交的表單數據。

我的問題是,如何驗證這個$data使用form_validation?

+0

您將設置錯誤消息好像數據沒有內部'如果(result.data)' – claudios

回答

2

你不能使用驗證庫form_validation您 應手動驗證全光照if語句,當你想

+0

感謝您通過那。 – Fil

相關問題