#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.