Как получить значение Ajax-ответа в jQuery

#php #jquery #json #ajax #codeigniter

#php #jquery #json #ajax #codeigniter

Вопрос:

Я работаю с ajax и Codeigniter, я отправляю запрос с помощью ajax на контроллер и получаю ответ, подобный приведенному ниже коду:-

Ответ контроллера:-

 array(1) {
  [0]=>
  object(stdClass)#29 (1) {
    ["absent"]=>
    string(1) "4"
  }
}
  

вопрос здесь в том, что я могу получить 4 из ответа?

вызов ajax:-

  $('#staff').change(function(){
    let staff_id  = $(this).val();
    let month = $('#month').val();

    $.ajax({
        url:base_url 'hr/home/getStaffAbsentDay',
        type:'POST',
        data:{
            'staff_id':staff_id,
            'month':month
        },
        success:function(response){
            console.log(response);
            
        }
    })
});
  

Контроллер:-

 public function getStaffAbsentDay(){
    $id =$this->input->post('staff_id');
    $month=$this->input->post('month');
    $this->stuff_model->get_staff_absent_days($id,$month);
}
  

Модель:-

 public function get_staff_absent_days($id,$month){
  $year =jDateTime::date('Y',false,false,true,'Asia/Kabul');
  $this->db->select('absent'); 
  $this->db->from('staff_attendance');   
  $this->db->where('staf_id', $id);
  $this->db->where('year', $year);
  $this->db->where('month', $month);
  $d=$this->db->get()->result();
  return json_encode($d);
}
  

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

1. response это массив с объектом. Просто используйте обычные способы доступа к элементам / свойствам этих типов данных.

2. Итак, как я могу это сделать?

3. Посмотрите учебник о том, как работать с массивами / объектами.

4. @Zia Yamin ваша проблема решена или нет?

5. @KUMAR нет, братан! не решаемая

Ответ №1:

Модель:-

 public function get_staff_absent_days($id,$month){
  $year =jDateTime::date('Y',false,false,true,'Asia/Kabul');
  $this->db->select('absent'); 
  $this->db->from('staff_attendance');   
  $this->db->where('staf_id', $id);
  $this->db->where('year', $year);
  $this->db->where('month', $month);
  $d=$this->db->get()->result();
  return $d;
}
  

Функция контроллера:-

    public function getStaffAbsentDay(){
        
        $id =$this->input->post('staff_id');
        $month=$this->input->post('month');
   
   $your_array__data = $this->stuff_model->get_staff_absent_days($id,$month);
      echo json_encode($your_array__data);
   
}
  

Вызов jQuery / Ajax :-

и теперь ваш response будет a JS array вместо string формата.

   success:function(response){
     var data = JSON.parse(response);
      console.log(data[0].absent)
      // $('#staffAbsentDays').html('success')
   }
  

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

1. это не сработало, братан! в нем говорится: неожиданный токен s в JSON в позиции 0 в JSON.parse

2. Я использовал это data = JSON.parse(JSON.stringify(response)); , и теперь это приносит string(16) "[{"absent":"4"}]"

3. Я обновил свой вопрос, пожалуйста, взгляните, а также я попробовал ваш код и сказал об ошибке в первом комментарии

4. теперь ответ [{"absent":"4"}] , так как я могу получить 4 ?

5. это console.log(data[1]) возвращение { для меня

Ответ №2:

Похоже, что ваш PHP использует var_dump для вывода своих данных. Это инструмент отладки для PHP. Не используйте его для написания API!

Вместо этого выведите данные в стандартном формате:

 header("Content-Type: application/json");
echo json_encode($your_data);
  

Тогда response вместо строки будет массив JS.