【问题标题】:CodeIgniter Ajax does not return MySQL dataCodeIgniter Ajax 不返回 MySQL 数据
【发布时间】:2011-10-29 02:53:04
【问题描述】:

基本上,我有一串函数可以加载一组博客条目来构建页面。在页面底部,我有一个链接,它启动一个 jQuery Ajax 到一个 Ajax 控制器,该控制器使用完全相同的函数字符串来加载更多具有不同偏移量的博客条目。

我最初在其中一个函数中有两个查询。一个计算总共存在多少行的函数,以及返回 10 行或更少行的数据的主函数。我正在获取所有数据,除了主要的博客条目数据。

这是大部分代码,我删除了函数中不相关的所有其他内容:

主视图控制器

public function blog() {
    $this->load->helper('date');
    $this->load->model('blog_model');

    $result = $this->blog_model->process_uri(0);
    $this->load->view($result['view'],$result);
}

Ajax 控制器

public function blog_data() {
    $this->load->helper('date');
    $this->load->model('blog_model');

    //$offset = $this->input->post('offset');
    $data = $this->blog_model->process_uri(0);
    echo json_encode($data);
}

型号

public function process_uri($offset) {
    $result;
    $uri = $this->uri;

    // There's more this function, but I cut it out.
    $result = array('type' => 'list');

    return $this->blog_model->get_blog_data($result,$offset);
}

我认为问题出在哪里

private function get_blog_data($data,$offset) {
    $return = array('type' => $data['type']);
    $limit;
    $select;

    if (false) {
    }
    else {
        $return['view'] = 'blog_view';

        $this->db->select('id');
        $r = $this->db->get('blog');
        $return['total'] = $r->num_rows() - ($offset + 10);
        $return['current'] = $offset + 10; // This returns

        $limit = 10;
        $select = 'blog.id,title,type,date,message,images';
        $this->db->order_by('blog.id','desc');
        if (isset($data['date'])) $this->db->like('date',$data['date'],'after');
    }

    $this->db->select($select);
    $this->db->from('blog');
    $this->db->join('blog_img','blog_img.id = blog.id','left');
    $this->db->limit($limit,$offset);

    // This does not return any data in the Ajax call.
    $return['entries'] = $this->blog_model->process_data($this->db->get());

    return $return;
}

private function process_data($data) {
    foreach($data->result() as $i => $row) {
        //Formats the data
    }
}

我在 JavaScript 中得到的返回数据是:

{"type":"list","view":"blog_view","total":5,"current":10,"entries":[]}

如您所见,即使我通过 Ajax 控制器传递相同的数据,条目数组仍然是空的。我对 CodeIgniter 不太熟悉,尤其是使用 Ajax 时,如果有人能提供帮助,我将不胜感激,因为这真的让我很生气。

另外,我知道问题不在于 JavaScript 代码,因为我尝试在 process_data 函数中添加一些静态数据以查看它是否会显示并且确实会显示,因此这就是我没有添加的原因JavaScript 代码。

【问题讨论】:

    标签: mysql ajax codeigniter jquery


    【解决方案1】:

    只是一个猜测,因为我不确定您的 javascript 调用的是什么,但如果您调用 get_blog_data 并且期望 jQuery 可以使用输出,那么它将无法正常工作。如果是这种情况,您应该代替returnjson_encode 或打印/回显数据。

    【讨论】:

    • 如果你查看 ajax 控制器我会回显 json_encode($data);
    【解决方案2】:

    经过一番搜索,我找到了 last_query codeigniter 函数,它返回最后一个查询,所以我可以看到出了什么问题。

    $return['last'] = $this->db->last_query();
    

    这是通过 AJAX 运行的查询

    SELECT `blog`.`id`, `title`, `type`, `date`, `message`, `images`\nFROM (`blog`)\nLEFT JOIN `blog_img` ON `blog_img`.`id` = `blog`.`id`\nWHERE  `date`  LIKE 'blog\\_data%'\nORDER BY `blog`.`id` desc\nLIMIT 10"
    

    我终于找到了问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-14
      • 1970-01-01
      相关资源
      最近更新 更多