【问题标题】:How to send view file content in JSON from CodeIgniter Controller如何从 CodeIgniter 控制器以 JSON 格式发送视图文件内容
【发布时间】:2015-05-26 15:29:00
【问题描述】:

我正在处理基于 CodeIgniter ajax 的项目。

我想要什么..?

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

这是我的工作代码

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... ";

更多详情请查看附件

【问题讨论】:

  • 对文件url使用Ajax get请求并返回页面的html?
  • 我已经在使用 ajax 请求了...如何在一次调用中获取所有参数...?我可以获得面包屑菜单和会话信息。但无法获取查看文件 HTML

标签: php ajax codeigniter model-view-controller


【解决方案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));

}

【讨论】:

    【解决方案2】:

    我找到了解决方案 :)

    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')));
            }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多