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设计模式之观察者模式
Apr 22 Javascript
Java中int与integer的区别(基本数据类型与引用数据类型)
Feb 19 Javascript
js如何编写简单的ajax方法库
Aug 02 Javascript
详解使用Visual Studio Code对Node.js进行断点调试
Sep 14 Javascript
详解基于vue-cli3.0如何构建功能完善的前端架子
Oct 09 Javascript
Vue结合后台导入导出Excel问题详解
Feb 19 Javascript
浏览器事件循环与vue nextTicket的实现
Apr 16 Javascript
vue实现移动端省市区选择
Sep 27 Javascript
微信小程序实现横向滚动导航栏效果
Dec 12 Javascript
JS实现页面数据懒加载
Feb 13 Javascript
微信分享invalid signature签名错误踩过的坑
Apr 11 Javascript
Element Input输入框的使用方法
Jul 26 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
大师制作的中短波矿石收音机
2020/04/02 无线电
在PHP中运行Linux命令并启动SSH服务的例子
2014/06/12 PHP
PHP+redis实现微博的拉模型案例详解
2019/07/10 PHP
基于jquery的固定表头和列头的代码
2012/05/03 Javascript
nodejs中exports与module.exports的区别详细介绍
2013/01/14 NodeJs
jQuery事件绑定.on()简要概述及应用
2013/02/07 Javascript
jquery仿搜索自动联想功能代码
2014/05/23 Javascript
Javascript实现可旋转的圆圈实例代码
2015/08/04 Javascript
bootstrap组件之导航组件使用方法
2017/01/19 Javascript
学习使用jQuery表单验证插件和日历插件
2017/02/13 Javascript
浅谈vue单一组件下动态修改数据时的全部重渲染
2018/03/01 Javascript
解析vue路由异步组件和懒加载案例
2018/06/08 Javascript
详解使用React.memo()来优化函数组件的性能
2019/03/19 Javascript
windows10系统中安装python3.x+scrapy教程
2016/11/08 Python
PyQt5每天必学之创建窗口居中效果
2018/04/19 Python
python中ASCII码字符与int之间的转换方法
2018/07/09 Python
python机器学习之KNN分类算法
2018/08/29 Python
python中ImageTk.PhotoImage()不显示图片却不报错问题解决
2018/12/06 Python
Python3实现定时任务的四种方式
2019/06/03 Python
Python实现最大子序和的方法示例
2019/07/05 Python
python3注册全局热键的实现
2020/03/22 Python
Jupyter安装链接aconda实现过程图解
2020/11/02 Python
python 实现ping测试延迟的两种方法
2020/12/10 Python
用python制作个音乐下载器
2021/01/30 Python
css3实现动画的三种方式
2020/08/24 HTML / CSS
突袭HTML5之Javascript API扩展2—地理信息服务及地理位置API学习
2013/01/31 HTML / CSS
eBay爱尔兰站:eBay.ie
2019/08/09 全球购物
Java语言的优势
2015/01/10 面试题
高中生学习的自我评价
2013/12/14 职场文书
建筑总经理岗位职责
2014/02/02 职场文书
大学毕业自我评价
2014/02/02 职场文书
酒店管理专业自荐信
2014/05/23 职场文书
2016年优秀班主任先进事迹材料
2016/02/26 职场文书
汽车销售合同文本
2019/08/08 职场文书
Mysql多层子查询示例代码(收藏夹案例)
2022/03/31 MySQL
Golang 切片(Slice)实现增删改查
2022/04/22 Golang