load->library('session');
}
/**
* 操作错误跳转的快捷方法
* @access protected
* @param string $message 错误信息
* @param string $jumpUrl 页面跳转地址
* @param mixed $ajax 是否为Ajax方式 当数字时指定跳转时间
* @return void
*/
protected function error($message = '', $jumpUrl = '', $ajax = false)
{
$this->dispatchJump($message, 0, $jumpUrl, $ajax);
}
/**
* 操作成功跳转的快捷方法
* @access protected
* @param string $message 提示信息
* @param string $jumpUrl 页面跳转地址
* @param mixed $ajax 是否为Ajax方式 当数字时指定跳转时间
* @return void
*/
protected function success($message = '', $jumpUrl = '', $ajax = false)
{
$this->dispatchJump($message, 1, $jumpUrl, $ajax);
}
/**
* Ajax方式返回数据到客户端
* @access protected
* @param mixed $data 要返回的数据
* @param String $type AJAX返回数据格式
* @param int $json_option 传递给json_encode的option参数
* @return void
*/
protected function ajaxReturn($data, $type = 'JSON', $json_option = 0)
{
if (empty($type)) {
$type = 'JSON';
}
switch (strtoupper($type)) {
case 'JSON':
// 返回JSON数据格式到客户端 包含状态信息
header('Content-Type:application/json; charset=utf-8');
exit(json_encode($data, $json_option));
case 'XML':
// 返回xml格式数据
header('Content-Type:text/xml; charset=utf-8');
exit(xml_encode($data));
case 'JSONP':
// 返回JSON数据格式到客户端 包含状态信息
header('Content-Type:application/json; charset=utf-8');
$handler = isset($_GET[C('VAR_JSONP_HANDLER')]) ? $_GET[C('VAR_JSONP_HANDLER')] : C('DEFAULT_JSONP_HANDLER');
exit($handler.'('.json_encode($data, $json_option).');');
case 'EVAL':
// 返回可执行的js脚本
header('Content-Type:text/html; charset=utf-8');
exit($data);
default:
// 用于扩展其他返回格式数据
Hook::listen('ajax_return', $data);
}
}
/**
* URL重定向
* @param string $url 重定向的URL地址
* @param integer $time 重定向的等待时间(秒)
* @param string $msg 重定向前的提示信息
* @return void
*/
protected function redirect($url, $time = 0, $msg = '')
{
//多行URL地址支持
$url = str_replace(array("\n", "\r"), '', $url);
if (empty($msg)) {
$msg = "系统将在{$time}秒之后自动跳转到{$url}!";
} else {
$msg .='
';
$msg .="系统将在{$time}秒之后自动跳转到{$url}!";
}
if (!headers_sent()) {
// redirect
if (0 === $time) {
header('Location: ' . $url);
} else {
header("refresh:{$time};url={$url}");
echo($msg);
}
exit();
} else {
$str = "";
if ($time != 0) {
$str .= $msg;
}
exit($str);
}
}
private function dispatchJump($message, $status = 1, $jumpUrl = '', $ajax = false)
{
if (true === $ajax || $this->input->is_ajax_request()) {// AJAX提交
$data = is_array($ajax)?$ajax:array();
$data['info'] = $message;
$data['status'] = $status;
$data['url'] = $jumpUrl;
$this->ajaxReturn($data);
} else {
$this->redirect($jumpUrl, 5, $message);
}
}
/**
* 是否是AJAx提交的
* @return bool
*/
protected function IS_AJAX()
{
return (! empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest');
}
/**
* 是否是GET提交的
*/
protected function IS_GET()
{
return $_SERVER['REQUEST_METHOD'] == 'GET' ? true : false;
}
/**
* 是否是POST提交
* @return int
*/
protected function IS_POST()
{
return ($_SERVER['REQUEST_METHOD'] == 'POST') ? true : false;
}
}