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 应用类库代码
Jun 02 Javascript
Jquery attr()方法 属性赋值和属性获取详解
Apr 15 Javascript
VueJS如何引入css或者less文件的一些坑
Apr 25 Javascript
利用ES6实现单例模式及其应用详解
Dec 09 Javascript
微信小程序中进行地图导航功能的实现方法
Jun 29 Javascript
layui 设置table 行的高度方法
Aug 17 Javascript
浅谈微信小程序flex布局基础
Sep 10 Javascript
在js代码拼接dom对象到页面上的模板总结
Oct 21 Javascript
详解Vue组件插槽的使用以及调用组件内的方法
Nov 13 Javascript
Vue 3.0双向绑定原理的实现方法
Oct 23 Javascript
vue实现动态表格提交参数动态生成控件的操作
Nov 09 Javascript
Vue项目中使用mock.js的完整步骤
Jan 12 Vue.js
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
PHP5.0正式发布 不完全兼容PHP4 新增多项功能
2006/10/09 PHP
PHP编写登录验证码功能 附调用方法
2016/05/19 PHP
在Laravel框架里实现发送邮件实例(邮箱验证)
2016/05/20 PHP
laravel5创建service provider和facade的方法详解
2016/07/26 PHP
laravel 执行迁移回滚示例
2019/10/23 PHP
php array 转json及java 转换 json数据格式操作示例
2019/11/13 PHP
解析window.open的使用方法总结
2013/06/19 Javascript
js+css 实现遮罩居中弹出层(随浏览器窗口滚动条滚动)
2013/12/11 Javascript
JS随机调用指定函数的方法
2015/07/01 Javascript
JQuery中Ajax()的data参数类型实例分析
2015/12/15 Javascript
javascript基础知识
2016/06/07 Javascript
JS判断指定dom元素是否在屏幕内的方法实例
2017/01/23 Javascript
react native 获取地理位置的方法示例
2018/08/28 Javascript
React 路由懒加载的几种实现方案
2018/10/23 Javascript
详解小程序之简单登录注册表单验证
2019/05/13 Javascript
WebSocket的简单介绍及应用
2019/05/23 Javascript
Vue数据驱动表单渲染,轻松搞定form表单
2019/07/19 Javascript
python的几种开发工具介绍
2007/03/07 Python
python中的实例方法、静态方法、类方法、类变量和实例变量浅析
2014/04/26 Python
python通过加号运算符操作列表的方法
2015/07/28 Python
Python在图片中添加文字的两种方法
2017/04/29 Python
Python 中Django安装和使用教程详解
2019/07/03 Python
pandas 时间格式转换的实现
2019/07/06 Python
Python3.5 win10环境下导入kera/tensorflow报错的解决方法
2019/12/19 Python
Jupyter notebook运行Spark+Scala教程
2020/04/10 Python
Python从MySQL数据库中面抽取试题,生成试卷
2021/01/14 Python
CSS3中文字镂空、透明值、阴影效果设置示例小结
2016/03/07 HTML / CSS
车辆维修工自我评价怎么写
2013/09/20 职场文书
银行党员批评与自我批评
2014/10/15 职场文书
学校三八妇女节活动总结
2015/02/06 职场文书
工作失职自我检讨书
2015/05/05 职场文书
2019最新版股权转让及委托持股协议书范本
2019/08/07 职场文书
Python字符串对齐方法使用(ljust()、rjust()和center())
2021/04/26 Python
「月刊Comic Alive」2022年5月号封面公开
2022/03/21 日漫
CSS实现渐变色边框(Gradient borders)的5种方法
2022/03/25 HTML / CSS
Python安装使用Scrapy框架
2022/04/12 Python