如何从mySQL获取数据并在Modal中查看



我试图通过在单击链接时显示 Modal 来显示名为tidketprob的表列中的一些记录。模态和查询看起来不错(通过回显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;
}
}

如果满足此条件,则return $query->row();模型中使用语法:$query->num_rows() > 0,这意味着您的模型将返回查询第一行的对象表示形式,并且下面控制器中的$result变量将是一个具有两个属性的对象:tidketprob

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);
}

由于上面的控制器使用echo json_encode($result);语法,因此 ajax 调用将返回$result变量的 json 表示形式,而上面成功回调函数中的data变量将如下所示

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

问题是,data.lengthajax 成功回调函数中将未定义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 数组,因此 Ajax 成功回调函数中的data.length不会未定义,并且您的模态将显示数据。看到这个jsfiddle,你会看到html变量不为空。

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

通过更改返回 $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;
}
}

相关内容

  • 没有找到相关文章

最新更新