codeIgniter を使用して、enctype: multipart/form-data でユーザー登録を正常に実装しましたが、その後、AJAX を使用してユーザー登録を試み始めました。コンソールで ajax 応答を確認できますが、常に null 値 (パスワードなど) を持つ応答が 1 つあります。また、ユーザーを登録していません。ajax リクエストを送信した後、データが挿入されません。これが私がやっていることです。これは、このスクリプトを書いた私の登録ビューです
<script type="text/javascript">
function AJAXcreatemember() {
//getting form fields values
var fname = $('#firstname').val();
var lname = $('#lastname').val();
var email = $('#email').val();
var pwd = $('#pwd').val();
var cpwd = $('#cpwd').val();
var gender = $('#gender').val();
var country = $('#country').val();
var city = $('#city').val();
var occupation = $('#occupation_area').val();
var about = $('#about').val();
var interest = $('#interest').val();
var contact_no = $('#contact_no').val();
var website_url = $('#website_url').val();
//setting ajax information to be sent to $.ajax()
var path = "<?php echo base_url()?>user/register/";
var data = 'first_name='+fname+'&last_name='+lname+'&email='+email+'&password='+pwd+'&gender='+gender+'&country='+country+'&city='+city+'&occupation_area='+occupation+'&about='+about+'&interest='+interest+'&contact_no='+contact_no+'&website_url'+website_url;
alert('URL: ' + path);
$.ajax({
url: path,
data: data,
type: 'GET',
success: function(data) {
alert(data);
}
});
return false;
</script>
ユーザーコントローラー:
public function register() {
$time = date("Y-m-d H:i:s");
$this->form_validation->set_rules('firstname', 'First Name', 'required');
$this->form_validation->set_rules('lastname', 'Last Name', 'required');
$this->form_validation->set_rules('gender', 'Gender', 'required');
$this->form_validation->set_rules('email', 'Email', 'required|valid_email');
$this->form_validation->set_rules('pwd', 'Password', 'matches[cpwd]');
$this->form_validation->set_rules('city', 'City', 'required');
$this->form_validation->set_rules('country', 'Country', 'required');
$this->form_validation->set_rules('occupation_area', 'Functional Area', 'required');
if ($this->form_validation->run() == FALSE) {
$this->index();
}
else {
$user_email = $this->user_model->get_user_by_email($this->input->post('email'));
if($user_email->num_rows() == 0) {
$avatar = $this->upload('profile_image');
$this->user_model->create_user($time , $avatar);
/*if($this->upload->data()) {
$data['success'] = 'yes';
$this->load->view('index', $data);
}*/
}
/*else {
$data['page_title'] = 'CM Rizwan - Khabrain News Group Columnist';
$data['email_exist_error'] = 'Email Already exist.';
$this->load->view('index', $data);
}*/
}
}
public function upload($field) {
$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '200';
$config['max_width'] = '1024';
$config['max_height'] = '768';
$config['encrypt_name'] = TRUE;
$this->load->library('upload', $config);
if(!$this->upload->do_upload($field)) {
$upload_error = array('upload_error' => $this->upload->display_errors());
$this->load->view('index', $upload_error);
}
/*else {
$upload_success = array('upload_data' => $this->upload->data());
$this->load->view('index', $upload_success);
}*/
//$this->upload->data() returns all the required information for an upload file.
$avatar = $this->upload->data();
return $avatar['file_name'];
}
注: 登録ビューは、スライスした index.php ファイルの一部です。登録ビューは、登録リンクをクリックすると表示されるポップアップです。