zoukankan      html  css  js  c++  java
  • 跨域(jsonp)方法

    使用JSON的优点在于:
    比XML轻了很多,没有那么多冗余的东西。
    JSON也是具有很好的可读性的,但是通常返回的都是压缩过后的。不像XML这样的浏览器可以直接显示,浏览器对于JSON的格式化的显示就需要借助一些插件了。
    在JavaScript中处理JSON很简单。
    其他语言例如PHP对于JSON的支持也不错。
    JSON也有一些劣势:
    JSON在服务端语言的支持不像XML那么广泛,不过JSON.org上提供很多语言的库。
    如果你使用eval()来解析的话,会容易出现安全问题。
    尽管如此,JSON的优点还是很明显的。他是Ajax数据交互的很理想的数据格式

    写法一:
    function jsonpCallback(jsonpdata){
      for(var i in jsonpdata){
        console.log(jsonpdata[i]);
      }
    }
    var JSONP = document.createElement('script');
    JSONP.type = 'text/javascript';
    JSONP.src = 'http://***/**.php?callback=jsonpCallback';


    写法二:

    <script type="text/javascript">
      function jsonpCallback(jsonpdata){
        for(var i in jsonpdata){
          console.log(jsonpdata[i]);
        }
      }
    </script>
    <script type="text/javascript" src=:"http://***/**.php?callback=jsonpCallback"></script>

    写法三:

    //jquery跨域

    $.getJSON("http://***/**.php?callback=?",function(jsondata){
      for(var i in jsondata){
        console.log(jsondata[i]);
      }
    })

    写法四:

    $.ajax({
      url:'http://***/**.php?callback',
      dataType:'jsonp',
      data:'',
      jsonp:'callback',
      success:function(jsondata){
        for(var i in jsondata){
          console.log(jsondata[i])
        }
      },
      timeout:1000
    })

    写法五:

    $.get('http://crossdomain.com/services.php?callback=?',
      {name: encodeURIComponent('tester')},
      function (json) {
        for(var i in json)
          console.log(i+":"+json[i]);
        }, 'jsonp');

    <?php
    服务端返回JSON数据
    $arr=array('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
    $result=json_encode($arr);
    echo $_GET['callback'].'("Hello,World!")';
    echo $_GET['callback']."($result)";
    动态执行回调函数
    $callback=$_GET['callback'];
    echo $callback."($result)";

  • 相关阅读:
    (转) 将VB.NET网站转换成C#的全过程
    vb.net转换为C#方法
    (转)使用Microsoft Web Application Stress Tool对web进行压力测试
    (转)js 中{},[]中括号,大括号使用详解
    (转)js学习笔记()函数
    (转)几种HtmlEncode的区别
    编译Redis系统提示缺少gcc,可以使用yum进行安装:
    linux如何关闭防火墙
    Linux less命令简介
    Linux unzip解压文件到某个目录下面
  • 原文地址:https://www.cnblogs.com/eye-color/p/6863706.html
Copyright © 2011-2022 走看看