Как получить данные из MySQL и просмотреть в модальном - PullRequest
0 голосов
/ 14 сентября 2018

Я пытаюсь показать некоторые записи из столбцов моей таблицы с именами tid и ketprob, показывая модал при нажатии на ссылку.Модал и запрос выглядят хорошо (проверено повторением last_query), но модал не показывает данных ... Пожалуйста, помогите мне: (

Код JS:

$('#showdata').on('click', '.item-info', function(){
  var tid = $(this).attr('data');

  $.ajax({
    type: 'ajax',
    method: 'get',
    url: '<?php echo base_url() ?>repeatproblem/infoReprob',
    data: {tid:tid},
    async: false,
    dataType: 'json',
    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);
    },
    error: function(){
      alert('Gagal Info Kode Error!');
    }
  });
});

Мой контроллер:

public function infoReprob(){ 
    $result = $this->m->infoReprob(); 
    echo json_encode($result); 
}

Моя модель:

public function infoReprob(){
    $tid = $this->input->get('tid');
    $this->db->select('tid, ketprob')->where('tid', $tid);
    $query = $this->db->get('histprob');
    if($query->num_rows() > 0){
        return $query->row();
    }else{
        return false;
    }
 }

Ответы [ 3 ]

0 голосов
/ 14 сентября 2018

Решено путем изменения return $ query-> row (); на return $ query-> result ();

Об этом узнаем.Или кто-нибудь может рассказать о разных .. Спасибо

public function infoReprob(){
    $tid = $this->input->get('tid');
    $this->db->select('tid, ketprob')->where('tid', $tid);
    $query = $this->db->get('histprob');
    if($query->num_rows() > 0){
        return $query->result();
    }else{
        return false;
    }
 }
0 голосов
/ 14 сентября 2018

Вы используете синтаксис 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 не пуста.

0 голосов
/ 14 сентября 2018

Полагаю, вам следует использовать echo $query->row(); вместо return $query->row();.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...