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 相关文章推荐
js技巧--转义符&quot;\&quot;的妙用
Jan 09 Javascript
javascript中&quot;/&quot;运算符常见错误
Oct 13 Javascript
jQuery解析XML与传统JavaScript方法的差别实例分析
Mar 05 Javascript
JavaScript实现的伸展收缩型菜单代码
Oct 14 Javascript
详解Document.Cookie
Dec 25 Javascript
JavaScript中setTimeout的那些事儿
Nov 14 Javascript
vue.js利用Object.defineProperty实现双向绑定
Mar 09 Javascript
Angularjs中数据绑定的实例详解
Aug 25 Javascript
在vue项目中安装使用Mint-UI的方法
Dec 27 Javascript
vue router 组件的高级应用实例代码
Apr 08 Javascript
小程序采集录音并上传到后台
Nov 22 Javascript
JS面向对象之单选框实现
Jan 17 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
解析yii数据库的增删查改
2013/06/20 PHP
PHP类的封装与继承详解
2015/09/29 PHP
PHP+Mysql+jQuery中国地图区域数据统计实例讲解
2015/10/10 PHP
php使用PDO下exec()函数查询执行后受影响行数的方法
2017/03/28 PHP
laravel-admin解决表单select联动时,编辑默认没选上的问题
2019/09/30 PHP
js调试工具 Javascript Debug Toolkit 2.0.0版本发布
2008/12/02 Javascript
JQuery扩展插件Validate 1 基本使用方法并打包下载
2011/09/05 Javascript
jquery数组过滤筛选方法grep()简介
2014/06/06 Javascript
jQuery 实现自动填充邮箱功能(带下拉提示)
2014/10/14 Javascript
探究Vue.js 2.0新增的虚拟DOM
2016/10/20 Javascript
js代码实现下拉菜单【推荐】
2016/12/15 Javascript
js使用Replace结合正则替换重复出现的字符串功能示例
2016/12/27 Javascript
EasyUI的TreeGrid的过滤功能的解决思路
2017/08/08 Javascript
js使用html2canvas实现屏幕截取的示例代码
2017/08/28 Javascript
使用async、enterproxy控制并发数量的方法详解
2018/01/02 Javascript
ios设备中angularjs无法改变页面title的解决方法
2018/09/13 Javascript
NodeJs操作MongoDB教程之分页功能以及常见问题
2019/04/09 NodeJs
Python 错误和异常小结
2013/10/09 Python
python使用PyFetion来发送短信的例子
2014/04/22 Python
让python同时兼容python2和python3的8个技巧分享
2014/07/11 Python
在Python的Django框架中创建语言文件
2015/07/27 Python
Python 带有参数的装饰器实例代码详解
2018/12/06 Python
简单了解python gevent 协程使用及作用
2019/07/22 Python
Python closure闭包解释及其注意点详解
2019/08/28 Python
打包PyQt5应用时的注意事项
2020/02/14 Python
Selenium python时间控件输入问题解决方案
2020/07/22 Python
奇怪的鱼:Weird Fish
2018/03/18 全球购物
全球领先的美容用品专卖店:Beauty Plus Salon
2018/09/04 全球购物
您在慕尼黑的跑步商店:Lauf-bar
2019/10/11 全球购物
11月红领巾广播稿
2014/01/17 职场文书
爱护公物标语
2014/06/24 职场文书
2014年团队工作总结
2014/11/24 职场文书
检讨书模板大全
2015/05/07 职场文书
2016大学生社会实践单位评语
2015/12/01 职场文书
Vue自定义铃声提示音组件的实现
2022/01/22 Vue.js
《帝国时代4》赛季预告 新增内容编译器可创造地图
2022/04/03 其他游戏