Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从mySQL中获取数据并在Modal中查看_Javascript_Php_Mysql_Ajax_Codeigniter - Fatal编程技术网

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" } ]