JQuery Ajax 跨域访问的解决方案


Posted in Javascript onMarch 12, 2010

具体情况有:
一、本域和子域的相互访问: http://www.aa.com/和book.aa.com
二、本域和其他域的相互访问: http://www.aa.com/和http://www.bb.com/ 用 iframe
三、本域和其他域的相互访问: http://www.aa.com/和http://www.bb.com/ 用 XMLHttpRequest访问代理
四、本域和其他域的相互访问: http://www.aa.com/和http://www.bb.com/ 用 JS创建动态脚本
今天主要讨论第4中解决方案,这个和上个的区别就是请求是使用<script>标签来请求的,这个要求也是两个域都是由你来开发才行。原理就是JS文件注入,在本域内的a内生成一个JS标签,它的SRC指向请求的另外一个域的某个页面b,b返回数据即可,可以直接返回JS的代码。因为script的src属性是可以跨域的。
这里我们需要用到JQuery.getScript(url, callback)方法,url是脚本文件的URL路劲,callback函数在脚本资源已被加载和求值后调用的回调函数。
首先在bb.com创建一个js文件,test.js

var ojb = {msg:'js跨域请求成功'};

然后在aa.com的页面上使用$.getScript加载test.js脚本
$(function() { 
$.getScript('http://www.bb.com/test.js', function() { 
if (ojb) { 
alert(obj.msg); 
} 
}); 
});

使用$.getScript函数的最大好处就是可以保证,脚本加载完毕后调用回调函数。
个人感觉这种方法比使用代理和iframe要简单一些。
Javascript 相关文章推荐
Javascript-Mozilla和IE中的一个函数直接量的问题
Jan 09 Javascript
精心挑选的12款优秀的基于jQuery的手风琴效果插件和教程
Aug 22 Javascript
Extjs4 GridPanel的主要配置参数详细介绍
Apr 18 Javascript
深入分析Cookie的安全性问题
Mar 01 Javascript
下雪了 javascript实现雪花飞舞
Aug 02 Javascript
ReactNative-JS 调用原生方法实例代码
Oct 08 Javascript
JS获取html元素的标记名实现方法
Oct 08 Javascript
jQuery实现弹窗居中效果类似alert()
Feb 27 Javascript
关于TypeScript中import JSON的正确姿势详解
Jul 25 Javascript
JS实现获取自定义属性data值的方法示例
Dec 19 Javascript
vue监听dom大小改变案例
Jul 29 Javascript
JavaScript JSON使用原理及注意事项
Jul 30 Javascript
ExtJS 学习专题(一) 如何应用ExtJS(附实例)
Mar 11 #Javascript
jquery 简单的进度条实现代码
Mar 11 #Javascript
精通JavaScript 纠正 cleanWhitespace函数
Mar 11 #Javascript
Javascript 入门基础学习
Mar 10 #Javascript
javascript showModalDialog,open取得父窗口的方法
Mar 10 #Javascript
ExtJs3.0中Store添加 baseParams 的Bug
Mar 10 #Javascript
js Date自定义函数 延迟脚本执行
Mar 10 #Javascript
You might like
PHP 实现多服务器共享 SESSION 数据
2009/08/15 PHP
php下过滤html代码的函数 提高程序安全性
2010/03/02 PHP
Yii使用CLinkPager分页实例详解
2014/07/23 PHP
smarty模板引擎中内建函数if、elseif和else的使用方法
2015/01/22 PHP
php实现搜索类封装示例
2016/03/31 PHP
PHP中CheckBox多选框上传失败的代码写法
2017/02/13 PHP
ThinkPHP防止重复提交表单的方法实例分析
2018/05/10 PHP
基于jQuery的Spin Button自定义文本框数值自增或自减
2010/07/17 Javascript
计算世界完全对称日的js代码,粗糙版
2011/11/04 Javascript
jQuery 1.7.2中getAll方法的疑惑分析
2012/05/23 Javascript
点击显示指定元素隐藏其他同辈元素的方法
2014/02/19 Javascript
jQuery实现DIV层收缩展开的方法
2015/02/27 Javascript
JavaScript中诡异的delete操作符
2015/03/12 Javascript
JS处理json日期格式化问题
2015/10/01 Javascript
jQuery简单实现提交数据出现loading进度条的方法
2016/03/29 Javascript
微信小程序 实现点击添加移除class
2017/06/12 Javascript
JavaScript判断变量名是否存在数组中的实例
2017/12/28 Javascript
vue如何根据网站路由判断页面主题色详解
2018/11/02 Javascript
详解Vue源码中一些util函数
2019/04/24 Javascript
一起深入理解js中的事件对象
2021/02/06 Javascript
python解析xml模块封装代码
2014/02/07 Python
在Python的Django框架中编写编译函数
2015/07/20 Python
ubuntu16.04制作vim和python3的开发环境
2018/09/23 Python
python3+django2开发一个简单的人员管理系统过程详解
2019/07/23 Python
详解Python中的正斜杠与反斜杠
2019/08/09 Python
python实现超市管理系统(后台管理)
2019/10/25 Python
浅谈Python type的使用
2019/11/19 Python
python numpy库np.percentile用法说明
2020/06/08 Python
Europcar意大利:汽车租赁
2019/07/07 全球购物
业务助理岗位职责
2013/11/18 职场文书
干部选拔任用方案
2014/05/26 职场文书
社区戒毒工作方案
2014/06/04 职场文书
工作失职检讨书500字
2014/10/17 职场文书
2015年绩效考核工作总结
2015/05/23 职场文书
2016廉洁从业学习心得体会
2016/01/19 职场文书
go 原生http web 服务跨域restful api的写法介绍
2021/04/27 Golang