停止在控制器操作中呈现布局

时间:2013-01-08 07:39:59

标签: php codeigniter layout

我使用layout方法在CI框架中呈现我的模板,我在链接上添加一些修改,如果请求是AJAX则停止呈现布局

if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {

   return;

  } else {
      //render the layout (the code from example in the link)
 }

我面临的问题是我使用AjaxFileUpload将文件上传到服务器,请求类型是Synchronous,这意味着渲染布局!响应以jSon + HTML形式返回,这是布局条件的正常流程,如果请求在上传文件时是同步的,我该怎么做才能阻止渲染布局。

这是js

$.ajaxFileUpload({
url : url ",
secureuri :false,
fileElementId :'imageFile',
dataType : 'json',
type: "POST",

success : function (data)
{
  console.log(data);

},
error: function (request, status, error) { 

}
});

以及我从服务器返回的内容

 echo json_encode(array('status' => $status, 'msg' => $msg));
 return;

1 个答案:

答案 0 :(得分:0)

这个传递的简单解决方案null布局变量

class Welcome extends CI_Controller {

    public $layout = 'default';

    public function index()
    {
        $this->load->view('welcome_message');
    }

   public function ajax_call()
    {
        $this->layout = null;
       echo json_encode(array('status' => $status, 'msg' => $msg));
       // you can use this but your layout should be null
       $this->output
    ->set_content_type('application/json')
    ->set_output(json_encode(array('foo' => 'bar')));
    }
}