json 是一种数据格式
jsonp 是一种数据调用的方式。

你可以简单的理解为 带callback的json就是jsonp

话说我们访问一个页面的时候 需要像另一个网站获取部分信息, 这就是所谓的跨域请求才能完成的功能, 比如引入外部js, img 等等, 说到发送请求, 在web2.0的时代 我们避免不了 ajax 请求了, 当然我们在

工作中用到 ajax 跨域请求 是必须遇到的,当然ajax 是不支持跨域请求的 但jsonp可以解决这个问题, 下面我们就来分析一下在这个东西是怎么工作的额 。

说道JSONP,很简单,就是利用<script>标签没有跨域限制的特点来达到与第三方通讯的目的。当需要通讯时,本站脚本创建一个<script>元素,地址指向第三方的API网址,形如: 
<script src="http://www.example.net/api?param1=1&param2=2"></script> 
并提供一个回调函数来接收数据(函数名可约定,或通过地址参数传递)。 
第三方产生的响应为json数据的包装(故称之为jsonp,即json padding),形如: 
callback({"name":"hax","gender":"Male"}) 
这样浏览器会调用callback函数,并传递解析后json对象作为参数。本站脚本可在callback函数里处理所传入的数据。

可能多数人对它的知晓程度仅限于jQuery,jQuery提供了发送jsonp请求的方法。比如在使用$.ajax()方法的时候

   jQuery(document).ready(function(){ $.ajax({url: "http://域名/ajax/test",dataType: "jsonp",jsonp: "callback",success: function(json){//  alert(json);},error: function(){}});});

jQuery将jsonp请求封装成类似ajax请求的样子,这样能让开发者在使用的时候更加方便,但是实际上,jsonp压根不是通过XMLHttpRequest来实现的。

下面的代码你就知道jsonp的如何实现的了

var callbackName = 'callback';
window[callbackName] = function (data) {
alert(data);
// 对返回的数据做后续处理
}
var script = document.createElement('script');
script.src = 'http://hf-test.haoju.cn/esf/ajax/test?callback='+callbackName;
document.body.appendChild(script);

这是前端部分的代码,要想真正实现JSONP的功能,还需要后端的配合。针对上面这个例子,当前端请求这个script地址的时候,后端只要按以下内容响应就会有神奇的效果:

echo   callback('my is jsonp');

实际上,jQuery发JSONP请求时也是这么做的。

下面是Jason跟JasonP的项目实战连接:

http://www.qixing318.com/article/simply-describe-the-difference-between-json-with-json-as-well-as-the-actual-combat.html

转载于:https://www.cnblogs.com/jason-hhc/p/6491817.html

浅谈JSONP 的本质工作原理相关推荐

  1. 【NXP DN 系列】浅谈 DPAA1 Software Architecture 工作原理

    浅谈 DPAA1 Software Architecture 工作原理 一.介绍 DPAA1 的主要目的是在片上系统( SOC )的 IO 部分内提供智能处理,以进行路由和管 理与流量相关的处理工作, ...

  2. 浅谈MOS管的工作原理

    1.MOS管简介   MOS管又称场效应管,即在集成电路中绝缘性场效应管.MOS英文全称为Metal-Oxide-Semiconductor,即金属-氧化物-半导体,表示为:在一定结构的半导体器件上, ...

  3. 浅谈SEO搜索引擎基本工作原理

    搜索引擎工作原理一共包括三个过程:网页搜索,预处理信息,建立索引,那么今天铭伟就把搜索引擎的工作原理进行解析一篇. 1.抓取网页.每个独立的搜索引擎都有自己的网页抓取程序爬虫(spider).爬虫Sp ...

  4. (转)浅谈dedecms模板引擎工作原理及自定义标签

    理解织梦模板引擎有什么意义?一方面可以更好地自定义标签.更多在于了解织梦系统,理解模板引擎是理解织梦工作原理的第一步.理解织梦会使我们写php代码时更顺手,同时能学习一些php代码的组织方式. 这似乎 ...

  5. 计算机设备驱动的作用,浅谈电脑驱动程序的工作原理 详解电脑驱动程序意义...

    本文主要是关于电脑驱动程序的相关介绍,并着重对电脑驱动程序的工作原理及意义进行了详尽的阐述. 电脑驱动程序 1 驱动程序是什么 驱动程序的概念,驱动程序实际上是一段能让电脑与各种硬件设备通话的程序代码 ...

  6. 浅谈Servlet的本质

    浅谈Servlet的本质 孟军补充:其实这里的servlet引擎就是servletAPI规范,也就是接口规范,何必说的如此文邹邹的,真是. servlet的本质其实就是servletAPI,程序员se ...

  7. 浅谈Git的基本工作流程与简单的Git命令

    浅谈Git的基本工作流程与简单的Git命令 什么是GIT? 定义:是一个开源的分布式版本控制工具 功能: 代码备份 版本控制 协同开放 代码追溯 场景: 团队协同开放项目 Git仓库工作流程 Git常 ...

  8. 浅谈操作系统是如何工作的及简单的进程调度的linux实现

    浅谈操作系统是如何工作的及简单的进程调度的linux实现 1)进程的启动和切换机制 a)进程的启动机制 保存ebp的值到栈, 将esp的值保存在prev->thread.sp,在下一步esp的值 ...

  9. php的解析别名,浅谈laravel aliases别名的原理

    在laravel发现有些类可以直接use 类名,就能使用了,例如use DB;就可以使用DB类了,问题是DB这个类并不在根命名空间,这里面实际就是用到了别名. 先通过如下例子来分析基本原理 建立如下文 ...

最新文章

  1. 搭建yum仓库定制rpm包
  2. iphone开发如何测试?
  3. android左侧固定导航栏,Android使用fragment实现左侧导航
  4. Visual Studio 2005 移植 (札记之一)
  5. 消除文法左递归-编译原理
  6. ubuntu 修改 ssh默认端口号
  7. 通用型CRM还是行业型CRM?-定制为王
  8. 字符串之String类
  9. 物联网设备获取北京时间、年月日、星期几,GMT格林威治标准时间转换为北京时间,授时api Fiddler抓包调试
  10. xampps mysql无法启动
  11. kubernetes pod往宿主机拷贝文件
  12. 如何删减QQ无用功能 为系统彻底减负
  13. GlobalMapper小白学习日记
  14. 地铁bas服务器系统,轨道交通BAS系统/火车站地铁BAS系统包括什么
  15. padavan mysql_newifi3 用Padavan(老毛子)固件 搭建web 尝试
  16. 002.光流传感器(ADNS0380版)使用说明
  17. 处理器最新排行_CPU跑分工具CINBENCH R23排行榜出炉:AMD锐龙单核、多核均屠榜
  18. ubuntu16.04下安装网易云音乐(官网已经换为18.04)
  19. EBS之挂载表单的详细步骤
  20. JavaWEB_POI导出大量数据excel(50万左右)

热门文章

  1. matplotlib输出图形到网页_pytorch使用matplotlib和tensorboard实现模型和训练的可视化...
  2. java list排序 sort_Java排序方法sort的使用详解
  3. 什么是SQL Server GETDATE()函数?
  4. python zip函数_Python zip()函数
  5. 开课吧:Dubbo的整体架构设计有哪些分层?
  6. 开课吧Java课堂:特殊的字符串如何操作,字符串如何连接
  7. Java新职篇:多态性、封装性与继承性相互作用是什么?
  8. HTML5中Audio使用踩坑汇总
  9. drupal7 smtp+mimemail+mailsystem 实现发送html邮件
  10. linux Centos下mysql安装