• php 实现 jsonp 数据接口


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    <?php
    /**
     * @author zzclslove
     * @abstract php实现jsonp接口
     * @description 在控制器层直接使用 ControllerTool::json_report($data, 'GBK', $jsonp);
     * 即可向前台js返回数据
    */
    class ControllerTool
        /**
        * @abstract 将数据转换为json字符串
        * @param array $data 需要输出的数据
        * @param string $in_charset 输入数据的字符集,默认为GBK
        * @param string $var 以jsonp格式赋值变量为$var
        */
        public static function json($data$in_charset 'GBK'$var = null)
        {
            if(!self::belongToUTF8($in_charset))
            {
                $data_utf8 = self::iconv_object($in_charset'UTF-8'$data);
            }
            if (!empty($var))
            {
                echo "var ".$var"=";
            }
            return json_encode($data_utf8);
        }
        /**
         * @abstract 将数据以json格式输出
         * @param array $data 需要输出的数据
         * @param string $in_charset 输入数据的字符集,默认为GBK
         * @param string $var 以jsonp格式赋值变量为$var输出
        */
        public static function echo_json($data$in_charset 'GBK'$var = null)
        {
            echo self::json($data$in_charset$var);
        }
                         
        public static function echo_parent_callback_json($data$in_charset 'GBK'$parent_callback = null)
        {
            echo '<script>try{document.domain="webdev.com";}catch(e){}'
                    .'parent.'.$parent_callback.'('.self::json($data$in_charset).')'
                    .'</script>';
        }
        /**
         * @abstract json格式报告结果
         * @param array $data 数据正文
         * @param string 数据正文的字符集
         * @param string $var 以jsonp格式赋值变量为$var输出
        */
        public static function json_report($data array(), $in_charset 'GBK'$var = null, $parent_callback = null)
        {
            $json_data array();
            $json_data['data'] = $data;
            if(!empty($parent_callback))
            {
                self::echo_parent_callback_json($json_data$in_charset$parent_callback);
            }
            else
            {
                self::echo_json($json_data$in_charset$var);
            }
        }
         
        private static function belongToUTF8($charset)
        {
              $utf8 array('utf8''UTF-8');
              return in_array($charset$utf8);
        }
        
    /**
         * 对象字符集转换
         * @param string $in_charset 输入字符集
         * @param string $out_charset 输出字符集
         * @param mixed $in_obj 输入对象
         */
        public static function iconv_object($in_charset$out_charset$in_obj)
       {
            $out_obj array();
            self::do_iconv_object($in_charset$out_charset, &$in_obj, &$out_obj);
            return $out_obj;
       }
    }
  • 相关阅读:
    varnish反向代理
    Asp.Net MVC 3.0
    反向代理(Reverse Proxy)
    Go语言开发Windows应用
    Windows下安装NodeJS和CoffeeScript方法
    数据库设计....
    发布一个开源的c++网络事件库
    非小型电子商务系统设计经验分享 Coding changes the world
    SqlServer查询计划
    cocos2dx总结(一)HelloWord
  • 原文地址:https://www.cnblogs.com/huidaoli/p/3824588.html
Copyright © 2020-2023  润新知