Вы используете синтаксис return $query->row();
в вашей модели, если это условие истинно: $query->num_rows() > 0
, то есть ваша модель будет возвращать объектное представление первой строки запроса и переменную $result
в вашем контроллере ниже.будет объектом с двумя свойствами: tid
и ketprob
public function infoReprob(){
$result = $this->m->infoReprob();
echo json_encode($result);
}
Теперь взгляните на вашу функцию обратного вызова для успешного вызова ajax
success: function(data){
var html = '';
var i;
for(i=0; i<data.length; i++){
html +='<p>'+data[i].tid+'</p>'+
'<p>'+data[i].ketprob+'</p>';
}
$('#infoModal').modal('show');
$('#view_errorcode').html(html);
}
Поскольку ваш контроллер использует *Синтаксис 1012 *, ваш ajax-вызов вернет json-представление переменной $result
, а переменная data
в вашей функции обратного вызова успеха будет выглядеть следующим образом:
{ "tid": "1", "ketprob": "abc" }
Проблема в том, что data.length
вВаша функция обратного вызова ajax success будет неопределенной, поскольку data
не является массивом, поэтому цикл for
не будет выполняться, а html
будет пустой строкой, см. this jsfiddle .Вот почему ваш модал не показывает данных.
Чтобы устранить проблему, я бы предложил изменить код вашей модели, как показано ниже:
public function infoReprob(){
$tid = $this->input->get('tid');
$this->db->select('tid, ketprob')->where('tid', $tid);
$query = $this->db->get('histprob');
return $query->result();
}
Используя синтаксис return $query->result();
, ваша модель всегда будетвернуть массив объекта.В результате ваш ajax-вызов вернет json, подобный этому
[ { "tid": "1", "ketprob": "abc" } ]
, который является массивом json, поэтому data.length
в вашей функции обратного вызова ajax success не будет неопределенным, и ваш модал покажет данные,Посмотрите этот jsfiddle , вы увидите, что переменная html
не пуста.