我有一个更改您的电子邮件地址的功能,基本上是在更新数据库中的用户表并通过Codeigniter的电子邮件库将电子邮件发送到新的电子邮件地址。
一切似乎都正常;更新数据库中的用户表,并将电子邮件发送到新的电子邮件地址。但是问题是,我的AJAX没有收到任何返回值或任何返回值。
我尝试合并这两个功能(更新电子邮件,将电子邮件发送到新的电子邮件地址),但是仍然没有效果。
我试图弄乱返回值只是为了确定,但是我的AJAX仍然不会控制台任何东西。
这是我的Javascript代码:
$('#save_email').click(function(){
if ($('#verified').val()==1) {
if ($('#register_email').val()=='') {
$("#register_email").css({"color":"red","border":"1px solid red"});
toastr.options.timeOut = 5000;
toastr.error('Email address is empty.', 'Error');
} else {
if (!validateEmail($('#register_email').val())){
$("#register_email").css({"color":"red","border":"1px solid red"});
toastr.options.timeOut = 5000;
toastr.error('Invalid email structure.', 'Error');
} else {
$.post($("#register_email").data('key'), {email:$('#register_email').val()}, function(data) {
if (data.ret == 1) {
$.post(baseurl + "applicant/profile/update_email", {email:$('#register_email').val()}, function(data) {
console.log(data.ret);
if (data.ret == 1) {
toastr.options.timeOut = 5000;
toastr.success('Email successfully saved.', 'Success');
var delay = 1500;
setTimeout(function(){ window.location.reload(true); }, delay);
} else {
toastr.options.timeOut = 5000;
toastr.error('Error occured.', 'Error');
}
}, 'json');
} else {
toastr.options.timeOut = 5000;
toastr.error('Email is already in use.', 'Error');
}
}, 'json');
}
}
} else {
$("#register_email").css({"color":"red","border":"1px solid red"});
toastr.options.timeOut = 5000;
toastr.error('Verify email address first.', 'Error');
}
});
这是我在控制器中的两个功能:
用于更新电子邮件地址
public function update_email()
{
$data = array(
'email' => $this->input->post('email'),
'username' => $this->input->post('email'),
'verify_code' => random_string('alnum', 8),
'verified' => 0
);
$user = $this->session->userdata('user');
$user_id = $user['idx'];
$ret = $this->applicant->update_user($user_id, $data);
$form_user = array (
'username' => $this->input->post('email')
);
$user = $this->applicant->get_user($form_user);
$return = $this->confirm_email_send($user);
$this->session->set_userdata('user', $user);
$this->session->set_userdata('person_id', $user['person_id']);
$user_role = $this->applicant->get_user_role($user['idx']);
$this->session->set_userdata('user_role',strtolower($user_role['role_name']));
if ($ret) {
echo json_encode(array('ret'=>1));
} else {
echo json_encode(array('ret'=>0));
}
}
用于将电子邮件发送到新的电子邮件地址:
public function confirm_email_send($user)
{
$config = Array(
'protocol' => 'smtp',
'smtp_host' => 'ssl://mail.sample.com',
'smtp_port' => 465,
'smtp_user' => 'info@sample.com',
'smtp_pass' => '*****',
'mailtype' => 'html',
'charset' => 'iso-8859-1',
'starttls' => true,
'wordwrap' => TRUE
);
$message = '';
$message .= '<p> Dear ' . $user['display_name'] . ',</p>';
$message .= '<p> Confirm your email to activate your Best Workers Account - <a href="' . base_url().'signup/verify/'.$user['verify_code'].'">Click Here</a></p>';
$message .= '<p> or copy and paste the following to your address bar: '. base_url().'signup/verify/'.$user['verify_code'];
$message .= '<p> Thank you!</p>';
$this->load->library('email');
$this->email->initialize($config);
$this->email->set_newline("\r\n");
$this->email->from('info@sample.com');
$this->email->to($user['email']);
$this->email->subject('Action Required - Best Workers Account Verification');
$this->email->message($message);
if($this->email->send())
{
return true;
}
else
{
$this->firephp->log($this->email->print_debugger());
}
}
我需要在AJAX中返回一些信息,以启动烤面包机通知。