跨域请求之JSONP
跨域恳求的方法有很多种,
1,iframe
2,document.domain
3,window.name
4,script
5,XDomainRequest (IE8+)
6,XMLHTTPRequest (Firefox3.5+)
7,postMessage (HTML5)
8,后台代理
...
它们有各自的优缺点,回来的数据格局也各不同,应根据需要慎重挑选。比方iframe回来html片段就对比适合,费老劲用它回来JSON就因小失大了。这篇开端我将打造一个有用的跨域恳求东西Sjax。运用script恳求的最大缺点,挑战是过错处理。比方404过错,它不象XMLHTTPRequest能精确的回来状况码404。我把这个放在最终一篇。
本系列首要描绘以上列举的方法4,即通过script回来JSON格局数据数据。这种方法如今称为JSONP。JSON是目前前后台交流运用最盛行,也最广泛的格局之一。相对于前期的AJAX回来XML(AJAX中的X即是XML),JSON显得更轻量级,没有剩余的Tag符号,解析也是原生的。XML回来到前端后先转成文档,通过DOM API一层层的解析。解析DOM是开支对比大的,尤其在前期的IE版别中(IE6/7/8),core js与dom交流的价值是很大的。
JSONP的实现思路很简单
1, 前端创立script符号,设置src,添加到head中(你可以往body中添加)。
2, 后台回来一个js变量jsonp,这个jsonp即是恳求后的JSON数据。
3, 回调完成后删去script符号(还有一些整理作业如防止有些浏览器内存泄露等)。
接口
Sjax.load(
url,// 跨过恳求的URL
success, // 回调函数,有必要界说一个形参,用于接纳后台回来的全局变量jsonp (约好后台回来如jsonp = {...}结构)
timestamp,// 传true会加一个时间戳,防止缓存,默许不加
);
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>sjax_0.1.js by snandy</title>
<script src="/js/sjax_0.1.js"></script>
</head>
<body>
<p id="p1" style="background:gold;"></p>
<input type="button" value="Get Name" οnclick="clk()"/>
<script type="text/javascript">
function clk(){
Sjax.load(
'http://lf.yunnanw.cn/',
'http://www.lcsyt.com/',
'http://www.minnan888.net/',
'http://www.vipfuxin.com/',
'http://www.qclchina.com/',
'http://www.tongxinglong.com/',
'http://www.jinanwuliangye.com/',
'',
function(){
document.getElementById('p1').innerHTML = 'Hi, ' + jsonp.name;
}
);
}
</script>
</body>
</html>
转载于:https://blog.51cto.com/8917152/1426950
跨域请求之JSONP相关推荐
- js跨域请求方式 ---- JSONP原理解析
这篇文章主要介绍了js跨域请求的5中解决方式的相关资料,需要的朋友可以参考下 跨域请求数据解决方案主要有如下解决方法: 1 2 3 4 5 JSONP方式 表单POST方式 服务器代理 Html5的X ...
- Ajax跨域请求解决方案——jsonp
转自:http://www.cnblogs.com/dowinning/archive/2012/04/19/json-jsonp-jquery.html 1.一个众所周知的问题,Ajax直接请求普通 ...
- ajax背景、ajax对象、ajax状态、ajax与http、ajax请求数据接口、同步与异步、ajax请求XML数据、封装ajax函数、artTemplate简介、同源策略和跨域请求、JSONP
AJAX简介: ajax背景: 1.AJAX(Asynchronous JavaScript And Xml)异步的 JavaScript 和 XML:ajax是浏览器提供的一套API,最早出现在谷歌 ...
- vue-resource ajax跨域,ajax 跨域请求 vue-resource jsonp跨域
aj体朋几一级发等点确层数框的很屏果行4带域ax 跨域请求 vue-resource j直分调浏器代,刚求的一学础过功互有解小久宗点差维含数如数围请sonp跨域 最近在学习vue.js 碰到个ajax ...
- jQuery jsonp跨域请求
当前端和后端不属于同源策略就会访问不到数据 同源策略就是相同的协议,域名,端口.如果前后端不属于同源策略又想获得后端的数据我们就可以通过跨域开获得数据 跨域的安全限制都是对浏览器端来说的,服务器端是不 ...
- ajax跨域请求Jsonp实现,使用jsonp实现ajax跨域请求
Jsonp(JSON with Padding)是资料格式 json 的一种"使用模式",可以让网页从别的网域获取资料. 由于同源策略,一般来说位于 server1.example ...
- 大数据互联网架构阶段 前台系统架构 跨域请求
电商项目 前台系统的架构 零.目录 前台架构设计 前台分类树 跨域请求技术 jsonp httpClient 一 .前台架构设计 不能直接访问数据库 , 需要通过后台访问数据 架构: 单通道连接资源 ...
- 跨域解决方法——jsonp原理
跨域解决方法--jsonp原理 一个域名地址的组成: 当协议.子域名.主域名.端口号任意一个不相同时,都算作不同域,不同域之间相互请求资源,就算做"跨域".由于浏览器同源策略的限制 ...
- js请求结果拦截机器_js利用jquery的jsonp来解决ajax跨域请求被浏览器拦截结果的问题...
先来个表.页面太多对不起我也不知道这张表是从哪个博客保存过来的,所以无法注明博客地址.非常抱歉.URL说明是否允许通信 http://www.a.com/a.jshttp://www.a.com/b. ...
最新文章
- spring mvc 返回json数据的四种方式
- python运行不了指令_python不是内部命令或外部命令,也不是可执行程序解决方法...
- nextfloat_Java Random nextFloat()方法与示例
- UFLDL教程笔记及练习答案三(Softmax回归与自我学习***)
- [No00009E]几种常见的命名规则
- 《PHP和MySQL Web开发从新手到高手(第5版)》一一1.7 万事俱备,摩拳擦掌
- 邮箱与手机做账号的验证实例
- linux如何安装阵列卡驱动程序,Linux安装阵列卡驱动及档.doc
- Pyplot绘制多幅图形/多个数据的方法
- 网站正在建设中_网站建设中如何设计更能吸引用户
- 你要好好的---歌词
- JaveScript简单数据类型(JS知识点归纳二)
- Excel绘制折线图--更新中。。。
- 目前主流的电脑操作系统
- 网易测试工程师笔经面经(已上岸)
- oracle reco进程停止,oracle的后台进程能否杀掉
- Docker Mysql使用学习
- StringUtil方法全集
- java项目中获取真实ip地址
- Vuetify学习记录(三)-- v-data-table