使用JavaScript 实现各种跨域的方法


Posted in Javascript onMay 08, 2013

一、一些概念

①传统Ajax:交互的数据格式——自定义字符串或XML描述;

跨域——通过服务器端代理解决。

②如今最优方案:使用JSON格式来传输数据,使用JSONP来跨域。

③JSON:一种数据交换格式。基于纯文本、被原生JS支持。

    格式:两种数据类型描述符:大括号{ }、方括号[ ]。分隔符逗号、映射符冒号、定义符双引好。

④JSONP:一种跨域数据交互协议,非官方。

1、Web页面调用js文件,可跨域。扩展:但凡有src属性的标签都具有跨域能力。

2、跨域服务器 动态生成数据 并存入js文件(通常json后缀),供客户端 调用。

3、为了便于客户端使用数据,形成一个非正式传输协议,称为JSONP。该协议重点是允许用户传递一个callback参数给服务器,然后服务器返回数据时 将此callback参数作为函数名包裹住JSON数据,使得客户端可以随意定制自己的函数来自动处理返回数据。

二、JSONP实现

实例1——客户端单方面接收:

①客户端——在客户端设置创建一个函数对象,名称可为callFunc,用于接收服务器的js数据和对其进行处理。

js数据中的核心是:调用callFunc函数的同时附带着参数,此参数即data对象的值。

<script type="text/javascript">
    var callFunc = function(data){
        alert('远程js文件传来的数据:' + data.result);//data为服务器端的JSON数据对象。
    };
</script>
<script type="text/javascript" src="http://其他域的js文件.com/remote.js"></script>

②服务器端——直接调用客户端js中的函数,并传入数据。
callFunc({"result":"value1"});

实例2——客户端向服务器传送 指定函数名,服务器端接收该函数名 并调用对应函数 将数据以参数形式传入。
<script type="text/javascript">
    // 得到航班信息查询结果后的回调函数
    var flightHandler = function(data){
        alert('你查询的航班结果是:票价 ' + data.price + ' 元,' + '余票 ' + data.tickets + ' 张。');
    };
    // 动态添加链接服务器js文件的script。
// 在url地址中传递了一个code参数匹配JSON数据中的某个key,callback参数则告诉服务器:本地回调函数名为callFuncName。
    var url = "http://flightQuery.com/jsonp/flightResult.aspx?code=CA1998&callback=callFuncName";
    var script = document.createElement('script');
    script.setAttribute('src', url);
    // 将script元素在网页加载时插入head头部
    document.getElementsByTagName('head')[0].appendChild(script); 
</script>

总结:实现的代码并不复杂,但在实现Ajax跨域、frameset/iframe跨域等却是效率颇高的。
Javascript 相关文章推荐
使用jQuery模板来展现json数据的代码
Oct 22 Javascript
腾讯UED 漂亮的提示信息效果代码
Sep 12 Javascript
关于scrollLeft,scrollTop的浏览器兼容性测试
Mar 19 Javascript
jQuery大于号(&gt;)选择器的作用解释
Jan 13 Javascript
jQuery实现移动 和 渐变特效的点击事件
Feb 26 Javascript
JavaScript使用concat连接数组的方法
Apr 06 Javascript
JQuery validate插件Remote用法大全
May 15 Javascript
js绑定事件和解绑事件
Apr 27 Javascript
jQuery制作input提示内容(兼容IE8以上)
Jul 05 jQuery
jQuery判断网页是否已经滚动到浏览器底部的实现方法
Oct 27 jQuery
jquery获取select选中值的文本,并赋值给另一个输入框的方法
Aug 21 jQuery
Next.js实现react服务器端渲染的方法示例
Jan 06 Javascript
jQuery根据纬度经度查看地图处理程序
May 08 #Javascript
使用JavaScript 实现对象 匀速/变速运动的方法
May 08 #Javascript
JavaScript 创建运动框架的实现代码
May 08 #Javascript
jQuery输入城市查看地图使用介绍
May 08 #Javascript
深入Javascript函数、递归与闭包(执行环境、变量对象与作用域链)使用详解
May 08 #Javascript
基于jquery实现拆分姓名的方法(纯JS版)
May 08 #Javascript
jQuery cdn使用介绍
May 08 #Javascript
You might like
php HtmlReplace输入过滤安全函数
2010/07/03 PHP
浅谈关于PHP解决图片无损压缩的问题
2017/09/01 PHP
关于恒等于(===)和非恒等于(!==)
2007/08/20 Javascript
javascript 事件查询综合 推荐收藏
2010/03/10 Javascript
jquery validate使用攻略 第四步
2010/07/01 Javascript
ie中js创建checkbox默认选中问题探讨
2013/10/21 Javascript
js从10种颜色中随机取色实现每次取出不同的颜色
2013/10/23 Javascript
jQuery实现下拉框左右选择的简单实例
2014/02/22 Javascript
JavaScript访问CSS属性的几种方式介绍
2014/07/21 Javascript
jQuery实现首页顶部可伸缩广告特效代码
2015/04/15 Javascript
js和jQuery设置Opacity半透明 兼容IE6
2016/05/24 Javascript
javascript验证内容为数字以及长度为10的简单实例
2016/08/20 Javascript
快速解决js开发下拉框中blur与click冲突
2016/10/10 Javascript
canvas滤镜效果实现代码
2017/02/06 Javascript
js图片延迟加载(Lazyload)三种实现方式
2017/03/01 Javascript
HTML5+Canvas调用手机拍照功能实现图片上传(上)
2017/04/21 Javascript
Vuejs实现购物车功能
2017/11/05 Javascript
vue+iview 实现可编辑表格的示例代码
2018/10/31 Javascript
jquery 验证用户名是否重复代码实例
2019/05/14 jQuery
vue 使用class创建和清除水印的示例代码
2020/12/25 Vue.js
[01:04:14]OG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python 回调函数和回调方法的实现分析
2016/03/23 Python
Python之Scrapy爬虫框架安装及使用详解
2017/11/16 Python
Python面向对象之类和对象实例详解
2018/12/10 Python
python实现鸢尾花三种聚类算法(K-means,AGNES,DBScan)
2019/06/27 Python
python关于倒排列的知识点总结
2020/10/13 Python
美国一家运动专业鞋类零售商:Warehouse Shoe Sale(WSS)
2018/03/28 全球购物
波兰购物网站:MALL.PL
2019/05/01 全球购物
EM Cosmetics官网:由彩妆大神Michelle Phan创办的独立品牌
2020/04/27 全球购物
文员岗位职责
2013/11/09 职场文书
培训主管岗位职责
2014/02/01 职场文书
2014年两会学习心得体会
2014/03/10 职场文书
教师自我鉴定范文
2014/03/20 职场文书
推荐信模板
2014/05/09 职场文书
纯html+css实现打字效果
2021/08/02 HTML / CSS
详细介绍python操作RabbitMq
2022/04/12 Python