как остановить перенаправление на страницу контроллера при отправке данных формы через ajax post в codeigniter

#php #jquery #html #ajax #codeigniter

#php #jquery #HTML #ajax #codeigniter

Вопрос:

Я пытаюсь отправить данные формы из представления в контроллер с помощью Ajax post и вернуть сообщение об успешном завершении.И ajax, на мой взгляд, успешно отправляет данные в функцию контроллера, но функция контроллера не возвращает ответ обратно на функцию успеха ajax.

мой контроллер — profile.php

 function save()
 {
      $response = array();
     $this->form_validation->set_rules('fname', 'Title cant be empty ', 'required');
     if ($this->form_validation->run() == TRUE)
        {
             $param = $this->input->post();
             unset($param['submit']);
             $param['rid']=$this->session->userdata('id');  

            $profile_id = $param['profile_id'];
            unset($param['profile_id']);
            if($profile_id == 0)
            {

             $inserts = $this->profile_model->insert($param);
             if( $inserts>0){
                 $response['status'] = TRUE;
                 $response['notif'] ="success add profile details";
             }else{
                    $response['status'] = FALSE;
                    $response['notif']  = 'Server wrong, please save again';
            }
            }else{

            }

     }else{
            $response['status'] = FALSE;
            $response['notif']  = validation_errors();
     }
 echo json_encode($response);

 } 
  

просмотр — profile_new_user.php

              ?>
    <form method="POST" id="form_profile" action="<?php echo base_url().'profile/save'; ?>">
     <input type="hidden" name="profile_id" value="0"><!-------event id---------->
     <div class="form-group">

                        <label>Prefix</label>
                         <select name="prefix" class="form-control">
.
.
.
                     </div>
     <div class="form-group">
      <input type="submit" name="submit" value="Save" class="btn btn-info" />
     </div>
    </form>
 <script type="text/javascript">
 $(document).ready(function() {

 $("#form_profile").submit(function(event){
     event.preventDefault(); 
    $.ajax({
  method: "POST",
  url: $(this).attr("action"),
  dataType :'JSON',
  data: $(this).serialize(),
   success: function(data)
   { 

   if(data.status){   
       alert('ok');
   }else{
        alert('not ok');
   }
   }
})
});
   });
  

модель — profile_model.php

 function insert($data)
 {
  $this->db->insert('user_profile', $data);
  return $this->db->insert_id();
 }
  

после того, как я нажму кнопку отправки, страница перенаправляется на URL —http://localhost/ptm6/profile/save и страница показывает

{«status»: true, «notif»: «успешно добавить данные профиля»}

обычным текстом.

Я ожидаю показать предупреждающее сообщение без какого-либо перенаправления.

Комментарии:

1. Что вы получаете в данных?

2. данные: $(this). serialize(), — это отправка сериализованных данных формы на контроллер.

3. Я имею в виду, что внутри успеха попробуйте alert (данные) или alert (data.status)

4. я уже пробовал, это не сработало.

5. успех: функция (данные) { оповещение (‘не в порядке’); } — даже это не сработало