通过ajax获取Codeigniter的$ this-> output-> set_output()的内容

时间:2014-10-18 05:40:07

标签: jquery ajax codeigniter codeigniter-2

我正在使用jQuery ajax和Codeigniter创建应用程序。现在,当我的会话到期时,检查CI的$ this-> session-> userdata(' user_data')是空的,如果它是真的我将它设置为标题状态401未授权。并应返回返回的自定义数据。

这是我的代码:

if( empty($this->session->userdata('user_data')) ) {
        if($this->input->is_ajax_request()){
            $this->output
                ->set_content_type('application/json')
//set cutom output.
                ->set_output(json_encode( array('response_code' => 401, 'message' => 'unauthorized') ))
                ->set_status_header('401');
        }
        else {
            //redirect to login page
            redirect('login/logout');
        }
    }

如您所见,我将自定义输出设置为json。 我的ajax请求是

   $(document).ajaxError(function(e,xhr,o) {
      // how can I fetch the contents from here?
   });
   var url = /*url for my controller */;
   var params = /* objects to be passed */;
   $.post(url, params).done(function(e){
     console.log('success');
   });

来源: 我在CI documentation output class

中找到了标题

2 个答案:

答案 0 :(得分:1)

fail的用户$.post()回调方法获取error

.fail(function(e,xhr, o) {
      // how can I fetch the contents from here?
  });

ajaxError是全局调用,它与ajaxSetup方法

相关联

答案 1 :(得分:1)

刚刚回答了我自己的问题。谢谢你的回答,它给了我一个想法。原因是json是从预期的反应中追加的。例如。期待"你好!"作为回应它给了我

 hello{'response_code': 401, 'message': 'unauthorized'}

我只需要json部分。不是响应字符串。

我所做的是在我的PHP部分,我检查还有一个活跃的会话:

   if( empty($this->session->userdata('user_data')) ) {
        if($this->input->is_ajax_request()){
            $this->output
                ->set_content_type('application/json')
                ->set_status_header('401');
                //I passed the data to die(). in order to disregard the previous response
                // and get the expected response 
                // {'response_code': 401, 'message': 'unauthorized'} 
                die(json_encode( array('response_code' => 401, 'message' => 'unauthorized') ));
        }
        else {
            //redirect to login page
            redirect('login/logout');
        }
    }