如何从CodeIgniter Controller以JSON格式发送视图文件内容

时间:2015-03-23 15:07:40

标签: php ajax codeigniter model-view-controller

我正在使用CodeIgniter ajax基础上的项目。

我想要什么..?

我想使用JSON ajax加载页面内容... 当从客户端机器生成请求时。 Controller将使用动态值执行视图文件,然后它将返回视图文件HTML,breadcrumb菜单项和其他一些东西...

这是我的工作代码

class Manage extends CI_Controller {
    public function contentHome() {
        if($this->session->userdata('logged_in')) {
            $html = "Hello World... Hello World... ";
            $breadcrumb = array();

            header('Content-Type: application/json');
            echo json_encode(array('breadcrumb' => $breadcrumb , 'pageContent' => $html, 'session' => true, 'redirect' => false));
        } else {
            echo json_encode(array('breadcrumb' => '' , 'pageContent' => '', 'session' => false, 'redirect' => site_url('manage/login')));
        }
    }
}

如何用视图文件HTML替换此$html = "Hello World... Hello World... ";

有关详细信息,请参阅附件 enter image description here

2 个答案:

答案 0 :(得分:1)

确保请求来自ajax 并发回相关的标题响应代码。 您想捕获ajax错误处理程序中的任何未授权( 401 )代码

public function contentHome()
{
    // only allow ajax requests
    if(!this->input->is_ajax_request()) return;

    // you could also set some validation
    if(!$this->session->userdata('logged_in')) 
        return $this->output->set_status_header("401"); // un-authorized

    // Or directly send stuff to the browser
    $data = array(
       'pageContent'  => $this->load->view('', null, true),
       'breadcrumbs'  => $breadcrumbs
    );

    return $this->output
                ->set_header("HTTP/1.0 200 OK")
                ->set_content_type('application/json')
                ->set_output(json_encode($data));

}

答案 1 :(得分:0)

我找到了解决方案:)

public function contentHome() {
        if($this->session->userdata('logged_in')) {
            $html = $this->load->view('manage/contentHome', '', true);
            $breadcrumb = array();

            header('Content-Type: application/json');
            echo json_encode(array('breadcrumb' => $breadcrumb , 'pageContent' => $html, 'session' => true));
        } else {
            echo json_encode(array('breadcrumb' => '' , 'pageContent' => '', 'session' => false, 'redirect' => site_url('manage/login')));
        }
    }