CodeIgniter - 使用与AJAX请求的数据库连接

时间:2014-01-25 17:45:12

标签: php jquery ajax codeigniter

我正在使用一个脚本(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>

2 个答案:

答案 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();

访问CodeIgniter“超级对象”

之后,将$this替换为scheduler.php中的$CI,您将可以访问框架库和函数等。

阅读部分:文档中的Utilizing CodeIgniter Resources within Your Library