我正在使用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');
});
中找到了标题
答案 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');
}
}