Javascript 如何从mySQL中获取数据并在Modal中查看
我试图通过单击链接时显示模式来显示名为Javascript 如何从mySQL中获取数据并在Modal中查看,javascript,php,mysql,ajax,codeigniter,Javascript,Php,Mysql,Ajax,Codeigniter,我试图通过单击链接时显示模式来显示名为tid和ketprob的表列中的一些记录。模态和查询看起来很好(通过回显上次的_查询进行检查),但模态没有显示任何数据。。。请帮助我:( JS代码: $('#showdata').on('click', '.item-info', function(){ var tid = $(this).attr('data'); $.ajax({ type: 'ajax', method: 'get', url: '<?php e
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(){
$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;
}
}
我想您应该使用
echo$query->row();
而不是return$query->row();
通过将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;
}
}
如果此条件为真,则在模型中使用
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);
}
问题是,ajax成功回调函数中的data.length
将是未定义的,因为data
不是数组,因此for
循环将不会执行,而html
将是空字符串,请参见。这就是模态不显示数据的原因
为了解决这个问题,我建议如下更改您的模型代码
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();
语法,您的模型将始终返回一个对象数组
[ { "tid": "1", "ketprob": "abc" } ]
这是一个json数组,因此ajax成功回调函数中的data.length
不会未定义,您的模式将显示数据。请看,您将看到html
变量不是空的。感谢您的响应,改为echo而不是return,但会显示JS错误警报。可能会删除数据类型:“json”
-从表中接收到的数据往往不是正确的JSON数据。@Damianzapiewski删除了JSON并显示长整版文本“未定义”@Vickel此代码已经在我的控制器中jsoned:public function infoReprob(){$result=$This->m->infoReprob();echo JSON_encode($result);}:)如前所述,区别在于$query->row()
返回一个对象,而$query->result()
返回一个对象数组。查看我的答案,了解为什么$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');
return $query->result();
}
[ { "tid": "1", "ketprob": "abc" } ]