From 371ecbc57aaf43988508058959dce2d59b1a673c Mon Sep 17 00:00:00 2001 From: yunwuxin <448901948@qq.com> Date: Thu, 14 Jul 2016 15:55:09 +0800 Subject: [PATCH] =?UTF-8?q?json=E8=BE=93=E5=87=BA=E6=97=B6=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E7=BC=96=E7=A0=81=E5=A4=B1=E8=B4=A5=E5=90=8E=E6=8A=9B?= =?UTF-8?q?=E5=87=BA=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- library/think/response/Json.php | 8 +++++++- library/think/response/Jsonp.php | 13 ++++++++++--- 2 files changed, 17 insertions(+), 4 deletions(-) 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; }