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

最新文章

  1. SQL 语句大全(转载)
  2. css 清除浮动最佳方法!
  3. 敏捷开发方法-Scrum
  4. 图片下载缓存防止OOM
  5. 在CentOS上搭建PHP服务器环境
  6. safedog的小技巧
  7. git学习笔记07-冲突了怎么办-那就解决冲突呗
  8. sizeof和strlen()的区别
  9. 关于javascript中的 执行上下文和对象变量
  10. cocos2d_x_08_游戏_FlappyBird
  11. rabbitMQ说明文档
  12. HTTP Basic Authentication认证的各种语言 后台用的
  13. C socket udp方式发数据
  14. 常用业务接口界面化 in python flask
  15. androidpn-client笔记及BUG修改
  16. python按照指定字符或者长度 截取字符串
  17. WP8.1学习系列(第二十七章)——ListView和GridView入门
  18. tkinter events format
  19. eclipse 关联 Maven本地仓库的配置
  20. Mongodb学习笔记(1)--入门

热门文章

  1. iOS - 数据存储方式(本地化)
  2. active port
  3. Linux之Vim的使用
  4. 定制centos6.5自动安装ISO光盘
  5. 第五周作业:markdown语法小总结
  6. python中实现一个简单的进度条
  7. nexus私服搭建及信息配置
  8. certbot更新错误
  9. for,foreach,$.each()跳出循环的比较
  10. 使用PS进行切图