如何从mysql获取数据并在modal中查看

gv8xihay  于 2021-06-21  发布在  Mysql
关注(0)|答案(3)|浏览(386)

我正在尝试显示表列中名为 tid 以及 ketprob 单击链接时显示模态。模态和查询看起来很好(通过回显上一个查询进行检查),但是模态没有显示任何数据。。。请帮助我:(
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;
    }
 }
lawou6xi

lawou6xi1#

我想你应该用 echo $query->row(); 而不是 return $query->row(); .

s71maibg

s71maibg2#

通过修改return$query->row()解决;返回$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;
    }
 }
hxzsmxv2

hxzsmxv23#

您正在使用 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 +=''+data[i].tid+''+
''+data[i].ketprob+'';
}
$('#infoModal').modal('show');
$('#view_errorcode').html(html);
}

因为上面的控制器使用 `echo json_encode($result);` 语法,您的ajax调用将返回 `$result` 变量和 `data` 上面的success回调函数中的变量如下所示

{ "tid": "1", "ketprob": "abc" }

问题是, `data.length` 在您的ajax成功回调函数将是未定义的,因为 `data` 不是数组,所以 `for` 循环将不执行,并且 `html` 将是一个空字符串,请参阅此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中,成功回调函数不会是未定义的,并且模态将显示数据。看到这个jsfiddle,你会看到 `html` 变量不为空。

相关问题