技术饭

jsonp请求接口php设置返回头部以及js格式化数字

copylian    0 评论    15477 浏览    2018.03.19

jsonp请求接口php设置返回头部以及js格式化数字,文章主要整理了jsonp请求的php接口的流程并且给出了一些js函数代码,方便处理数据。

1、jsonp请求接口

$(function(){

    //获取参数

    var $params = getRequest();

    //jsonp请求接口

    $.getJSON("http://api.copylian.com/Api/Index/getOperationReport/rt_type/jsonp/date/"+$params['date']+"/my_api_cb/getOperationReport?jsonpCallback=?");

});

其中:rt_type是返回的类型,my_api_cb是返回的回调方法

2、执行接口,在执行接口之前会调用构造函数设置jsonp返回信息

public function getOperationReport(){

         //设置请求类型

        set_return_type();       

        //返回数据

        ajaxReturn('获取数据成功!', 1, $data);

}

3、配置jsonp请求回调参数

'VAR_JSONP_HANDLER'=>'my_api_cb', //jsonp格式参数名

4、关键函数

/**

 * @desc 用户设置返回值类型及JSONP回调函数,用于解决跨域问题

 * @'VAR_JSONP_HANDLER'=>'my_api_cb',

 */

function set_return_type() {

    $rt_type = I ( "request.rt_type", "", "strip_tags" );

    $rt_type = $rt_type == "" ? session ( "rt_type" ) : $rt_type;

    $rt_type = check_rt_type ( $rt_type );

    C ( 'DEFAULT_AjaxReturn', $rt_type );

    if ($rt_type == "JSONP") {

        $jsonp_handler = isset ( $_GET [C ( 'VAR_JSONP_HANDLER' )] ) ? $_GET [C ( 'VAR_JSONP_HANDLER' )] : "";

        if ($jsonp_handler) {

            $jsonp_handler = preg_replace ( "/[^a-zA-Z0-9_]/", "", $jsonp_handler );

            $jsonp_handler = preg_replace ( "/[^a-zA-Z_]/", "", $jsonp_handler );

            $_GET [C ( 'VAR_JSONP_HANDLER' )] = $jsonp_handler;

        }

    }

}


/**

 * @desc 返回大写的类型

 */

function check_rt_type($str) {

    $type = 'JSON';

    $str = strtoupper ( $str );

    if ($str == 'XML' || $str == 'JSONP') {

        $type = $str;

    }

    return $type;

}


/**

 * @desc 返回数据

 */

function ajaxReturn($rt_msg, $rt_no = '', $data = array(), $isLog = 1) {

    if (is_array ( $rt_msg )) {

        $rts = $rt_msg;

    } else {

        $rts = array ();

        $rts ['rt'] = $rt_no;

        $rts ['msg'] = $rt_msg;

        $rts ['data'] = $data;

    }

    $rt_type = C ( 'DEFAULT_AjaxReturn' ); //返回类型

    $str = json_encode ( $rts );

    if ($rt_type == "JSONP") {

        $handler = isset ( $_GET [C ( 'VAR_JSONP_HANDLER' )] ) ? $_GET [C ( 'VAR_JSONP_HANDLER' )] : C ( 'DEFAULT_JSONP_HANDLER' );

        $str = $handler . '(' . $str . ');'; //设置jsonp返回

    }

    // 返回JSON数据格式到客户端 包含状态信息

    header ( 'Content-Type:application/json; charset=utf-8' );

    exit ( $str );

}

5、JavaScript方法

    //获取参数

   function getRequest() {

        var url = location.search; //获取url中"?"符后的字串

        var theRequest = new Object();

        if (url.indexOf("?") != -1) {

            var str = url.substring(1);

            var strs = str.split("&");

            for(var i = 0; i < strs.length; i ++) {

               theRequest[strs[i].split("=")[0]]=(strs[i].split("=")[1]);

            }

        }

        return theRequest;

   }

   /*

        * 参数说明:

        * number:要格式化的数字

        * decimals:保留几位小数

        * dec_point:小数点符号

        * thousands_sep:千分位符号

        */

   function number_format(number, decimals, dec_point, thousands_sep) {

        number = (number + '').replace(/[^0-9+-Ee.]/g, '');

        var n = !isFinite(+number) ? 0 : +number,

            prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),

            sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,

            dec = (typeof dec_point === 'undefined') ? '.' : dec_point,

            s = '',

            toFixedFix = function (n, prec) {

                var k = Math.pow(10, prec);

                return '' + Math.floor(n * k) / k;

            };

        s = (prec ? toFixedFix(n, prec) : '' + Math.floor(n)).split('.');

        var re = /(-?\d+)(\d{3})/;

        while (re.test(s[0])) {

            s[0] = s[0].replace(re, "$1" + sep + "$2");

        }

        if ((s[1] || '').length < prec) {

            s[1] = s[1] || '';

            s[1] += new Array(prec - s[1].length + 1).join('0');

        }

        return s.join(dec);

    }

    //number_format(1234567.089, 2, ".", ",");//1,234,567.08

    

    /*

        * number:要格式化的数字

        */

    function number_format_zh(number){

    var number = Math.floor(number);

        var number_y = Math.floor(number/100000000);

        var number_w = Math.floor(number%100000000/10000);

        var number_q = Math.floor(number%100000000%10000);

        var number_yuan = Math.floor(number%100000000%10000/1000);


        var number_str = '';

        if(number_y > 0){

        number_str += "<span>"+number_y+"</span>"+'亿';

        number_str += "<span>"+number_w+"</span>"+'万';

        number_str += "<span>"+number_q+"</span>";

        } else if(number_w > 0){

        number_str += "<span>"+number_w+"</span>"+'万';

        number_str += "<span>"+number_q+"</span>";

        } else if(number_q > 0){

        number_str += "<span>"+number_q+"</span>";

        } else {

        number_str += "<span>"+number_yuan+"</span>";

        }

        return number_str;

 }

飓风呀
感谢你的支持,我会继续努力!
扫码打赏,感谢您的支持!

文明上网理性发言!

  • 还没有评论,沙发等你来抢