zoukankan      html  css  js  c++  java
  • 初步了解JSONP

    一、JSON 与 JSONP 

    JSON是一种基于文本的数据交换方式(数据描述格式),JSONP是一种非官方跨域数据交互协议。

    ajax的核心是通过XmlHttpRequest获取非本页内容,而jsonp的核心则是动态添加<script>标签来调用服务器提供的js脚本。

    二、为什么要用JSONP

    Ajax直接请求普通文件是跨域无权限访问的,但是Web页面上调用js文件时则不受是否跨域影响,于是服务端可以将数据装进JS文件传输回来。jQuery支持JSONP。

    方式:用户传递一个callback参数给服务端,然后服务端返回数据时会将这个callback参数作为函数名来包裹住JSON数据,这样客户端就可以随意定制自己的函数来自动处理返回数据了。

    三、DEMO

    JQUERY

    $.ajax({
                 type: "get",
                 async: false,//true为异步请求(默认)。false为同步请求,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。
                 url: "",
                 data:{},//发送到服务器的数据。将自动转换为请求字符串格式。GET 请求中将附加在 URL 后。
                 dataType: "jsonp",//预期服务器返回的数据类型。如果不指定,jQuery 将自动根据 HTTP 包 MIME 信息来智能判断.使用 JSONP 形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。
                 jsonp: "callback",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(默认为:callback)
                 jsonpCallback:"",//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名,也可以写"?",jQuery会自动为你处理数据,(如果没设置,服务器可以用$_GET['callback']取到jquery默认生成的随机函数名)
                 success: function(data){//请求成功后的回调函数。
                    console.log(data);
                 },
                 error: function(msg){//请求失败时调用此函数。
                     console.log(msg);
                 }
             });
    

      

    PHP

     
    		 function jsonp($json)
    		{
    			$callback = isset($_GET['callback']) ? $_GET['callback'] : $_POST['callback'];
    			if (!preg_match('|^[0-9a-zA-Z_]+$|',$callback))exit('callback invalid');
    
    			if (is_array($json))
    			{
    				$json = json_encode($json);
    			}
    
    			echo $callback.'('.$json.');';
    			exit;
    		}
    		jsonp(array('ret'=>0));
    

      

  • 相关阅读:
    django 日志窜打问题
    获取f5 应用并发数情况返回JSON
    埋在 MySQL 数据库应用中的17个关键问题!
    python 模拟发送JSON数据
    python 模拟 curx -u
    分区表和全局索引
    Oracle 普通表转分区表
    阿里云吕漫漪:深度解析国内首个云原生数据库POLARDB的“王者荣耀”
    哪些顾虑会影响企业采用云桌面?
    哪些顾虑会影响企业采用云桌面?
  • 原文地址:https://www.cnblogs.com/lzs-888/p/5392881.html
Copyright © 2011-2022 走看看