| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 | <?php// +----------------------------------------------------------------------// | ThinkPHP [ WE CAN DO IT JUST THINK ]// +----------------------------------------------------------------------// | Copyright (c) 2006~2018 http://thinkphp.cn All rights reserved.// +----------------------------------------------------------------------// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )// +----------------------------------------------------------------------// | Author: liu21st <liu21st@gmail.com>// +----------------------------------------------------------------------namespace think\response;use think\Request;use think\Response;class Jsonp extends Response{    // 输出参数    protected $options = [        'var_jsonp_handler'     => 'callback',        'default_jsonp_handler' => 'jsonpReturn',        'json_encode_param'     => JSON_UNESCAPED_UNICODE,    ];    protected $contentType = 'application/javascript';    /**     * 处理数据     * @access protected     * @param mixed $data 要处理的数据     * @return mixed     * @throws \Exception     */    protected function output($data)    {        try {            // 返回JSON数据格式到客户端 包含状态信息 [当url_common_param为false时是无法获取到$_GET的数据的,故使用Request来获取<xiaobo.sun@qq.com>]            $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']);            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;        }    }}
 |