我正在使用一个脚本(applications/view/pages/home.php
),它有一个AJAX请求,可以获取并显示另一个脚本的内容(我们称之为scheduler.php
)。调度程序文件只是一个包含动态修改的html的文件,它基于从AJAX请求传递给它的$ _GET参数。
我的问题是这个动态内容来自数据库,而且由于AJAX调用了scheduler.php,因此它不会继承$this->db->
能力。
我收到错误:Fatal error: Using $this when not in object context
。
我该如何解决这个问题?我是CodeIgniter和AJAX的新手。谢谢!
编辑:Scheduler.php代码:
<?php
$shift = $_GET['shift'];
?>
<table>
<tr>
<th><?php echo $d->format('l') . '<br>' . $d->format('F jS'); ?></th>
</tr>
<tr>
<td>
<?php
$this->db->select('id', 'event', 'time');
$query = $this->db->get('myTable', $shift, $shift-5);
foreach ($query->result() as $row) {
echo "<a href='/schedule/{$row['id']}'>{$row['event']} at {$row['time']}</a><br>";
}
</td>
</tr>
</table>
答案 0 :(得分:1)
根据评论中的讨论,scheduler.php不是控制器或库。
所以你在CI项目之外打电话。您不能使用CI DB功能,直到您通过CI index.php文件进行处理。
所以只需将scheduler.php作为控制器,如下所示:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Scheduler extends CI_Controller {
public function index($shift = "")
{
// add your stuff here to response to ajax request.
}
}
?>
然后将ajax网址更改为:domain.com/index.php/scheduler/index/{shift_value_here}
答案 1 :(得分:0)
您可以通过$CI =& get_instance();
之后,将$this
替换为scheduler.php中的$CI
,您将可以访问框架库和函数等。
阅读部分:文档中的Utilizing CodeIgniter Resources within Your Library。