jsonp 接口编写实例

<?php  
header("Content-type:text/html;charset=utf-8");
//http://www.weektest.com/20160907/app.php?type_id=1&key=4eca43cd572620f7b40b34f40174740a&type=jsonp?callblack=?
//接值
$type_id=$_GET['type_id'];

$callblack=isset($_GET['callblack'])?$_GET['callblack']:"";
$key=$_GET['key'];

$type=isset($_GET['type'])?$_GET['type']:"json";

/**接口地址:http://www.weektest.com/20160907/app.php
支持格式:json/xml
请求方式:get
请求示例:http://www.weektest.com/20160907/app.php/type_id=1&key=您申请的KEY&type=xml;
请求参数说明:
    名称     类型     必填     说明
      type_id int     Y   文章类型id,如:"1",
      key     string     Y     你申请的key
返回参数说明:
    名称     类型     说明
     id      int    文章id
    title   varchar 标题
   content  varchar 内容
json返回数据
{
    "data":[{
        "id":"1",
        "title":"易建联返航NBA",
        "content":"易建联与湖人队正式签约,新赛季重返NBA...."}
        ,{"id":"2",
        "title":"梦之队里约夺冠?",
        "content":"对于对手来说梦12队依然不可战胜...."},
        {"id":"3",
        "title":"火箭休赛期报告",
        "content":"痛定思痛之后,火箭休赛期对阵容进行了大幅调整...."},
        {"id":"4",
        "title":"易建联返航NBA",
        "content":"易建联与湖人队正式签约,新赛季重返NBA...."}],
    "resultcode":"200",
    "reason":"查询成功"}

xml返回数据
<news>
    <new>
        <id>1</id>
        <title>易建联返航NBA</title>
        <content>易建联与湖人队正式签约,新赛季重返NBA....</content>
    </new>
    <new>
        <id>2</id>
        <title>梦之队里约夺冠?</title>
        <content>对于对手来说梦12队依然不可战胜....</content>
    </new>
    <new>
        <id>3</id>
        <title>火箭休赛期报告</title>
        <content>痛定思痛之后,火箭休赛期对阵容进行了大幅调整....</content>
    </new>
    <new>
        <id>4</id>
        <title>易建联返航NBA</title>
        <content>易建联与湖人队正式签约,新赛季重返NBA....</content>
    </new>
    <new>
        <id>5</id>
        <title>梦之队里约夺冠?</title>
        <content>对于对手来说梦12队依然不可战胜....</content>
    </new>    
</news>
**/
$app_key=md5("nba".$type_id);
if($key!=$app_key){
    $data['resultcode']=401;
    $str=json_encode($data);
     echo $callblack."(".$str.")";exit;
}else{
   $pdo=new PDO("mysql:host=localhost;dbname=day",'root','root');
   $pdo->query("set names utf8");
   $re=$pdo->query("SELECT id,title,content FROM nba WHERE type_id=$type_id ");
   $data['data']=$re->fetchAll(PDO::FETCH_ASSOC);
   //var_dump($data);exit;
   if($type=="xml"){
           header("Content-type:text/xml;charset=utf-8");
           echo '<?xml version="1.0" encoding="utf-8"?>';
           echo "<news>";
                    foreach($data['data'] as $v){
                        echo "<new>";
                          echo "<id>{$v['id']}</id>";
                          echo "<title><![CDATA[{$v['title']}]]></title>";
                          echo "<content>{$v['content']}</content>";  
                        echo "</new>";
                    }
           echo "</news>";

   }elseif($type=="jsonp"){
          $callblack=$_GET['callblack'];
          //echo $callblack;
          // $str=json_encode($data);
          // echo $callblack."(".$str.")";
                               if(!empty($data['data'])){
                            $data['resultcode']="200";
                            $data['reason']="查询成功";
                                  if ( version_compare( PHP_VERSION,'5.4.0','<'))
                        {
                             $str = json_encode($data);
                             $str =  preg_replace_callback(
                                                        "#\\\u([0-9a-f]{4})#i",
                                                         function( $matchs)
                                                        {
                                                              return  iconv('UCS-2BE', 'UTF-8',  pack('H4',  $matchs[1]));
                                                        },
                                                          $str
                                                        );
                             echo $callblack."(".$str.")";
                            // echo ($str) ;
                        }
                         else
                        {
                             echo  json_encode($data,JSON_UNESCAPED_UNICODE);
                        }
                       }else{
                        $data['resultcode']=401;
                    $str=json_encode($data);
                     echo $callblack."(".$str.")";exit;
                    }
                               
   }else{
                        if(!empty($data['data'])){
                            $data['resultcode']="200";
                            $data['reason']="查询成功";
                                  if ( version_compare( PHP_VERSION,'5.4.0','<'))
                        {
                             $str = json_encode($data);
                             $str =  preg_replace_callback(
                                                        "#\\\u([0-9a-f]{4})#i",
                                                         function( $matchs)
                                                        {
                                                              return  iconv('UCS-2BE', 'UTF-8',  pack('H4',  $matchs[1]));
                                                        },
                                                          $str
                                                        );
                             echo ($str) ;
                        }
                         else
                        {
                             echo  json_encode($data,JSON_UNESCAPED_UNICODE);
                        }
                       }else{
                        $data['resultcode']=400;
                        echo json_encode($data);
                    }
        }                    
}

?>


/**************************************************************************************html页面****************************************************************

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>文章接口</title>
    <script type="text/javascript" src="jquery-2.1.1.min.js"></script>
</head>
<body>
    请输入文章分类id
    <input type="text"><br/>
    请输入key
    <input type="text" size="30"><br/>
    <button>搜索</button>
    <div id="box"></div>
</body>
    <script type="text/javascript">
    $(function(){
        $("button").click(function(){
            var type_id=$("input").eq(0).val();
            var key=$("input").eq(1).val();
            //alert(type_id+key);
            var url="http://www.weektest.com/20160907/app.php?type_id="+type_id+"&key="+key+"&type=jsonp&callblack=?";
            var str="";
            //alert(url)
            $.get(url,function(msg){
                //alert(msg)
                if(msg['resultcode']==200){
                    str+="<table border='1'><tr><th>文章id</th><th>文章标题</th><th>文章内容</th></tr>";
                    for(var i=0;i<msg['data'].length;i++){
                        str+="<tr><td>"+msg['data'][i]['id']+"</td>";
                        str+="<td>"+msg['data'][i]['title']+"</td>";
                        str+="<td>"+msg['data'][i]['content']+"</td></tr>";
                    }
                    str+="</table>";
                    $("#box").html(str);
                }else if(msg['resultcode']==401){
                    alert("请输入正确的key");
                }else{
                    alert("您输入的文章类型id不正确或文章类型不存在")
                }

            },'jsonp')
        })
        
        
    })
    </script>
</html>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值