codeigniter 从控制器返回获取数据以通过 Ajax 请求查看
Posted
技术标签:
【中文标题】codeigniter 从控制器返回获取数据以通过 Ajax 请求查看【英文标题】:codeigniter return fetch data from controller to view via Ajax request 【发布时间】:2017-09-06 10:29:27 【问题描述】:我加载了我想通过 ajax JSON 请求从数据库中显示获取记录的视图。但它没有显示记录。
这是我的视图代码
<div class="col-md-6" id="hodm_table">
<table class="table table-striped table-hover table-responsive">
<thead>
<tr>
<th>Task Name</th>
<th>Director</th>
<th>Duration</th>
<th>Status</th>
</tr>
</thead>
<tbody>
<?php foreach($result as $hodm) ?>
<tr>
<td><?php echo $hodm->t_name;?></td>
<td><?php echo $hodm->director;?></td>
<td><?php echo $hodm->duration;?></td>
<td><?php echo $hodm->status;?></td>
<?php ?>
</tbody>
</table>
</div>
</div>
<script type='text/javascript' language='javascript'>
$(document).ready(function()
$.ajax(
url:"<?php echo base_url();?>digital/dashboard/dig_short_hodm_table",
type: 'POST',
dataType: 'JSON',
success:function (data)
$('#hodm_table').html(data);
);
event.preventDefault();
);
</script>
这是我的模型
public function get_hodm()
return $this->db->get("hodm");
这是我的控制器
public function dig_short_hodm_table()
$data['result']=$this->pojo->get_hodm();
return json_encode($data);
当我加载我的页面时,它会显示错误
Message: Undefined variable: result
我想在视图加载时从数据库中获取记录并显示在视图表中。
【问题讨论】:
在控制器函数@xr33dx中加载视图页面 @Parvez 不工作 【参考方案1】:更新您的模型:
public function get_hodm()
return $this->db->get("hodm")->result();
你的控制器:
public function dig_short_hodm_table()
$result_html = '';
$result_set = $this->pojo->get_hodm();
foreach($result_set as $result)
$result_html .= '
<tr>
<td>' . $result->t_name . '</td>
<td>' . $result->director . '</td>
<td>' . $result->duration . '</td>
<td>' . $result->status . '</td>
</tr>';
echo json_encode($result_html);
最后是你的观点:
<div class="col-md-6" id="hodm_table">
<table class="table table-striped table-hover table-responsive">
<thead>
<tr>
<th>Task Name</th>
<th>Director</th>
<th>Duration</th>
<th>Status</th>
</tr>
</thead>
<tbody id="hodm_results">
</tbody>
</table>
</div>
<script type='text/javascript' language='javascript'>
$(document).ready(function()
$.ajax(
url:"<?php echo base_url();?>digital/dashboard/dig_short_hodm_table",
type: 'POST',
dataType: 'JSON',
success:function (data)
$('#hodm_results').html(data);
);
event.preventDefault();
);
</script>
【讨论】:
你能给我一个你收到的描述性错误信息吗? 遇到 PHP 错误严重性:通知消息:未定义变量:结果文件名:digital/dashboard.php 行号:38 回溯:文件:C:\xampp\htdocs\tmt_project\application\views\ digital\dashboard.php 行:38 功能:_error_handler 文件:C:\xampp\htdocs\tmt_project\application\controllers\digital\dashboard.php 行:17 功能:查看 文件:C:\xampp\htdocs\tmt_project\index. php 行:292 函数:require_once 我会添加另一个答案给我几秒钟 好的,谢谢。我在等 请点击我的问题。我已经标记了你的答案。谢谢你的帮助【参考方案2】:你必须这样改变
public function get_hodm()
return $this->db->get("hodm")->result();
【讨论】:
告诉我有什么问题或信息? 我知道你只是用 $data 更改 $data['result'] 的问题 第一个消息消息:未定义变量:结果闪烁然后显示空白页 哦更改此行以返回 json_encode($data);进入 echo json_encode($data); 你改变了什么和什么信息,你知道控制台吗?发现你的错?【参考方案3】:我已经更新了模型视图和控制器:
<script type='text/javascript' language='javascript'>
$(document).ready(function()
$.ajax(
url:"<?php echo base_url();?>digital/dashboard/dig_short_hodm_table",
type: 'POST',
dataType: 'JSON',
success:function (data)
var result = data.result;'
var row = "";
for(i=0; i < result.length; i++)
row += "<tr>";
row += "<td>"+result[i].t_name+"</td>";
row += "<td>"+result[i].director+"</td>";
row += "<td>"+result[i].duration+"</td>";
row += "<td>"+result[i].status+"</td>";
row += "</tr>";
$('#hodm_table > tbody').html(row);
);
event.preventDefault();
);
</script>
这是我的模型
public function get_hodm()
$query = $this->db->get("hodm");
return $query->result_array();
这是我的控制器
public function dig_short_hodm_table()
$data['result']=$this->pojo->get_hodm();
echo json_encode($data);
【讨论】:
你能在控制台签到吗?你得到什么回应 我得到了答案,感谢您的帮助。我更喜欢 EUG 答案【参考方案4】:尝试通过更改标题内容来像这样在控制器中返回
public function dig_short_hodm_table()
header('Content-Type: application/x-json; charset=utf-8');
$data['result']=$this->pojo->get_hodm();
echo(json_encode($data));
【讨论】:
【参考方案5】:像下面这样改变你的模型
public function get_hodm()
$query = $this->db->get("hodm");
return $query -> result();
【讨论】:
以上是关于codeigniter 从控制器返回获取数据以通过 Ajax 请求查看的主要内容,如果未能解决你的问题,请参考以下文章
Codeigniter- Ajax Codeigniter Ajax - 通过ajax返回不止一行
通过 insert_id() 插入数据库表的最后一个 id,而不是从 Codeigniter 中的模型返回到控制器文件