diff --git a/library/think/response/Json.php b/library/think/response/Json.php index f3cfc36f..a137f453 100644 --- a/library/think/response/Json.php +++ b/library/think/response/Json.php @@ -19,8 +19,9 @@ class Json extends Response protected $options = [ 'json_encode_param' => JSON_UNESCAPED_UNICODE, ]; - + protected $contentType = 'application/json'; + /** * 处理数据 * @access protected @@ -31,6 +32,11 @@ class Json extends Response { // 返回JSON数据格式到客户端 包含状态信息 $data = json_encode($data, $this->options['json_encode_param']); + + if ($data === false) { + throw new \InvalidArgumentException(json_last_error_msg()); + } + return $data; } diff --git a/library/think/response/Jsonp.php b/library/think/response/Jsonp.php index b6806575..fda1183a 100644 --- a/library/think/response/Jsonp.php +++ b/library/think/response/Jsonp.php @@ -22,7 +22,7 @@ class Jsonp extends Response 'default_jsonp_handler' => 'jsonpReturn', 'json_encode_param' => JSON_UNESCAPED_UNICODE, ]; - + protected $contentType = 'application/javascript'; /** @@ -35,8 +35,15 @@ class Jsonp extends Response { // 返回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 = $handler . '(' . json_encode($data, $this->options['json_encode_param']) . ');'; + $handler = !empty($var_jsonp_handler) ? $var_jsonp_handler : $this->options['default_jsonp_handler']; + + $data = json_encode($data, $this->options['json_encode_param']); + + if ($data === false) { + throw new \InvalidArgumentException(json_last_error_msg()); + } + + $data = $handler . '(' . $data . ');'; return $data; }