调用函数内的另一个函数后,AJAX中没有返回

时间:2019-07-17 14:23:52

标签: javascript php ajax codeigniter email

我有一个更改您的电子邮件地址的功能,基本上是在更新数据库中的用户表并通过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中返回一些信息,以启动烤面包机通知。

0 个答案:

没有答案