• 跨域,json与jsonp格式


             好久都没有写随笔了,最近大家都忙着考试要放假了,我也要忙一忙喽.....不过再忙我还是来啦  

            简单的说,json是一种轻量级的数据交换格式。平时我们使用ajax等使用的一种数据形式,那么今天就说说jsonp是个什么鬼。首先接触的时候也是一脸懵逼,都不清楚这是什么东西,上网搜啊查啊,最后才弄明白了。

            我们平时在写项目的时候前端后端交互数据用的是json,但是如果你想跨域进行数据访问,比如别的网站想看到你的数据或者你想看到别人的数据,不能用json格式进行传送数据,有才的人啊就发现还有jsonp。老实说,jsonp就是满足你跨域读取数据的一种方法,下面就直接看代码吧。

    public function actionIndex(){
            header('Content-type: application/json');
            //获取回调函数名
            $jsoncallback = htmlspecialchars($_REQUEST ['jsoncallback']);//把预定义的字符转换为 HTML 实体。
    $resourceid = $_GET["resource_id"]; $resourceid = base64_decode($resourceid); $resourceid = SafetyHelper::KillDangerCode($resourceid); if(empty($resourceid) || is_numeric($resourceid)==false){ $json_data= json_encode(array("code"=>300,"msg"=>"素材ID错误","data"=>array())); echo $jsoncallback . "(" . $json_data . ")"; die(); } $resource = Resource::model()->find("id=".$resourceid); if(!empty($resource)){ $arr["code"]=200; $arr["msg"]="获取成功"; $arr["data"]=array("title"=>$resource->title,"url"=>$resource->filepath,"hits"=>$resource->hits); }else{ $arr["code"]=404; $arr["msg"]="资源不存在"; $arr["data"]=""; } $json_data=json_encode($arr); //输出jsonp格式的数据 echo $jsoncallback . "(" . $json_data . ")"; }

         可以看的出来,比平时我们用json的时候多了两行代码,就是要用这个回调函数来实现输出的格式变为jsonp。这是在PHP页面的代码,另外需要在HTML页面写一个js来调用得到jsonp。

    <!DOCTYPE html>  
    <html lang="en">  
    <head>  
        <meta charset="UTF-8">  
        <title>获取jsonp对象</title>  
        <script src="jquery.js"></script>  
    </head>  
    <body>  
    <input type="text" id="val" ><input type="button" id="dian" value="点击">  
        <script>  
        var url='jsonp.php';  
        $("#dian").click(function(){
            var aa=$("#val").val();
            var data={jsoncallback:aa};  
      
            $.getJSON(url,data,function(msg){
                alert(msg);
            })  
        })
    
        </script>  
    </body>  
    </html>  
  • 相关阅读:
    【Learning】积性函数前缀和——洲阁筛(min_25写法)
    GDOI2018记录
    最近公共祖先(一道题目)
    Counting
    【BZOJ4872】【Shoi2017】分手是祝愿
    【BZOJ2654】tree
    数学竞赛
    A
    【bzoj 3131】[Sdoi2013]淘金
    【Never Stop】联赛集训记录
  • 原文地址:https://www.cnblogs.com/xiaonannan/p/7099793.html
Copyright © 2020-2023  润新知