我正在使用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... ";
有关详细信息,请参阅附件
答案 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')));
}
}