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 event事件的传递与冒泡处理
Dec 06 Javascript
jQuery代码优化 选择符篇
Nov 01 Javascript
Javascript变量作用域详解
Dec 06 Javascript
HTML5 Shiv完美解决IE(IE6/IE7/IE8)不兼容HTML5标签的方法
Nov 25 Javascript
针对BootStrap中tabs控件的美化和完善(推荐)
Jul 06 Javascript
微信小程序入门教程
Nov 18 Javascript
微信小程序 石头剪刀布实例代码
Jan 04 Javascript
微信小程序 支付简单实例及注意事项
Jan 06 Javascript
js禁止Backspace键使浏览器后退的实现方法
Sep 01 Javascript
vue项目打包后打开页面空白解决办法
Jun 29 Javascript
微信小程序使用npm支持踩坑
Nov 07 Javascript
uniapp开发小程序的经验总结
Apr 08 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 OPCode缓存 APC详细介绍
2010/10/12 PHP
php数组中删除元素的实现代码
2012/06/22 PHP
PHP不用第三变量交换2个变量的值的解决方法
2013/06/02 PHP
php对象工厂类完整示例
2018/08/09 PHP
验证手机号码的JS方法分享
2013/09/10 Javascript
js post提交调用方法
2014/02/12 Javascript
js防止页面被iframe调用的方法
2014/10/30 Javascript
js分页工具实例
2015/01/28 Javascript
原生js编写焦点图效果
2016/12/08 Javascript
微信小程序中实现一对多发消息详解及实例代码
2017/02/14 Javascript
详解nodejs操作mongodb数据库封装DB类
2017/04/10 NodeJs
Webpack中css-loader和less-loader的使用教程
2017/04/27 Javascript
JavaScript变量作用域_动力节点Java学院整理
2017/06/27 Javascript
vue下拉菜单组件(含搜索)的实现代码
2018/11/25 Javascript
详解vue中async-await的使用误区
2018/12/05 Javascript
微信小程序入门之广告条实现方法示例
2018/12/05 Javascript
vue elementui el-form rules动态验证的实例代码详解
2019/05/23 Javascript
mpvue实现微信小程序快递单号查询代码
2020/04/03 Javascript
Python常用的内置序列结构(列表、元组、字典)学习笔记
2016/07/08 Python
使用PyV8在Python爬虫中执行js代码
2017/02/16 Python
python实现发送邮件功能
2017/07/22 Python
python交互式图形编程实例(二)
2017/11/17 Python
Python使用MD5加密算法对字符串进行加密操作示例
2018/03/30 Python
Django forms组件的使用教程
2018/10/08 Python
在Pytorch中使用样本权重(sample_weight)的正确方法
2019/08/17 Python
python使用pip安装模块出现ReadTimeoutError: HTTPSConnectionPool的解决方法
2019/10/04 Python
Python TestSuite生成测试报告过程解析
2020/07/23 Python
Python基础进阶之海量表情包多线程爬虫功能的实现
2020/12/17 Python
CSS3色彩模式有哪些?CSS3 HSL色彩模式的定义
2016/04/26 HTML / CSS
印度在线杂货店:bigbasket
2018/08/23 全球购物
有影响力的人、名人和艺术家的官方商品:Represent
2019/11/26 全球购物
《小白兔和小灰兔》教学反思
2014/02/18 职场文书
2015年街道除四害工作总结
2015/05/15 职场文书
交通安全学习心得体会
2016/01/18 职场文书
课改心得体会范文
2016/01/25 职场文书
基于Redis6.2.6版本部署Redis Cluster集群的问题
2022/04/01 Redis