From bb9e33e9a5fe07471daf4669832e9e430d49a89e Mon Sep 17 00:00:00 2001 From: yunwuxin <448901948@qq.com> Date: Mon, 17 Oct 2016 17:52:09 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3json=5Fencode=E6=97=B6=20"Fai?= =?UTF-8?q?led=20calling=20XXX::jsonSerialize()"=20=E7=9A=84=E5=BC=82?= =?UTF-8?q?=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- library/think/response/Json.php | 20 ++++++++++++++------ library/think/response/Jsonp.php | 26 +++++++++++++++++--------- 2 files changed, 31 insertions(+), 15 deletions(-) diff --git a/library/think/response/Json.php b/library/think/response/Json.php index a137f453..027aa2a3 100644 --- a/library/think/response/Json.php +++ b/library/think/response/Json.php @@ -27,17 +27,25 @@ class Json extends Response * @access protected * @param mixed $data 要处理的数据 * @return mixed + * @throws \Exception */ protected function output($data) { - // 返回JSON数据格式到客户端 包含状态信息 - $data = json_encode($data, $this->options['json_encode_param']); + try { + // 返回JSON数据格式到客户端 包含状态信息 + $data = json_encode($data, $this->options['json_encode_param']); - if ($data === false) { - throw new \InvalidArgumentException(json_last_error_msg()); + if ($data === false) { + throw new \InvalidArgumentException(json_last_error_msg()); + } + + return $data; + } catch (\Exception $e) { + if ($e->getPrevious()) { + throw $e->getPrevious(); + } + throw $e; } - - return $data; } } diff --git a/library/think/response/Jsonp.php b/library/think/response/Jsonp.php index fda1183a..b92aa9f6 100644 --- a/library/think/response/Jsonp.php +++ b/library/think/response/Jsonp.php @@ -30,21 +30,29 @@ class Jsonp extends Response * @access protected * @param mixed $data 要处理的数据 * @return mixed + * @throws \Exception */ protected function output($data) { - // 返回JSON数据格式到客户端 包含状态信息 [当url_common_param为false时是无法获取到$_GET的数据的,故使用Request来获取] - $var_jsonp_handler = Request::instance()->param($this->options['var_jsonp_handler'], ""); - $handler = !empty($var_jsonp_handler) ? $var_jsonp_handler : $this->options['default_jsonp_handler']; + try { + // 返回JSON数据格式到客户端 包含状态信息 [当url_common_param为false时是无法获取到$_GET的数据的,故使用Request来获取] + $var_jsonp_handler = Request::instance()->param($this->options['var_jsonp_handler'], ""); + $handler = !empty($var_jsonp_handler) ? $var_jsonp_handler : $this->options['default_jsonp_handler']; - $data = json_encode($data, $this->options['json_encode_param']); + $data = json_encode($data, $this->options['json_encode_param']); - if ($data === false) { - throw new \InvalidArgumentException(json_last_error_msg()); + if ($data === false) { + throw new \InvalidArgumentException(json_last_error_msg()); + } + + $data = $handler . '(' . $data . ');'; + return $data; + } catch (\Exception $e) { + if ($e->getPrevious()) { + throw $e->getPrevious(); + } + throw $e; } - - $data = $handler . '(' . $data . ');'; - return $data; } }