Genina Anne Gabuten
Genina Anne Gabuten

Reputation: 278

How to return the result using AJAX in CodeIgniter?

I want to ask how to return the response like return 'Password successfully updated'; or return 'Failed to Update Record'; on my view using the AJAX. It's working fine before without AJAX after submitting it returning the response.

Now I just include the AJAX on my form the form is working fine. but the error and success message (response) not showing up after submitting.

Ajax

 $(document).ready(function(){
    $('form.jsForm').on('submit', function(e){
        e.preventDefault();
        $.post('change_password_process', $('form.jsForm').serialize(), function(data){
            $('div.response').html(data);
        });
    });
});

Model

public function updatePassword($data){ //update user password
    $oldPassword = $data['oldPassword'];
    $user = $data['user'];

    $this->db->select('password')
             ->from('users')
             ->where('username', $user);
    $query = $this->db->get();
    $row = $query->row();

     if($this->bcrypt->check_password($oldPassword, $row->password)){
        if($this->db->set('password', $data['newPassword'])
                        ->where('username', $user)
                        ->update('users')){
            return 'Password successfully updated';
        } else {
            return 'Failed to Update Record';
        }

    } else {
        return 'Old password is incorrect!';
    }
}

Controller

if($this->form_validation->run() == TRUE){

        $data = array(
                'user' => $this->input->post('username'),
                'oldPassword' => $this->input->post('oldPassword'),
                'newPassword' => $this->bcrypt->hash_password($this->input->post('newPassword')),
                'cPassword' => $this->input->post('cPassword')
        );

        //this is the response from MODEL 

     $this->session->set_flashdata('response',$this->user_accounts_model->updatePassword($data)); 
        //redirect('user_accounts/change_password_form');

    } else {
        $this->change_password_form();
    }
}

View

<?php if($response = $this->session->flashdata('response')) :?>

    <div class="alert alert-dismissible alert-success">
      <?=$response?>
    </div>
<?php endif; ?> //this is the form result w/out ajax

<div class="response"></div> //this is using ajax

Upvotes: 1

Views: 159

Answers (1)

Hikmat Sijapati
Hikmat Sijapati

Reputation: 6994

In model just echo instead of return.

if($this->db->set('password', $data['newPassword'])
                        ->where('username', $user)
                        ->update('users')){
            echo 'Password successfully updated';
        } else {
            echo 'Failed to Update Record';
        }

    } else {
        echo 'Old password is incorrect!';
    }

Upvotes: 3

Related Questions