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贪吃蛇完整版(源码)
Dec 09 Javascript
jQuery控制Div拖拽效果完整实例分析
Apr 15 Javascript
原生js和jQuery实现淡入淡出轮播效果
Dec 25 Javascript
AngularJS基础 ng-readonly 指令简单示例
Aug 02 Javascript
JS制作图形验证码实现代码
Oct 19 Javascript
AngularJS实现与Java Web服务器交互操作示例【附demo源码下载】
Nov 02 Javascript
Vue.js实现简单ToDoList 前期准备(一)
Dec 01 Javascript
vue2.0结合Element实现select动态控制input禁用实例
May 12 Javascript
聊聊JS动画库 Velocity.js的使用
Mar 13 Javascript
Vue 指令实现按钮级别权限管理功能
Apr 23 Javascript
原生js实现二级联动菜单
Nov 27 Javascript
JavaScript如何实现监听键盘输入和鼠标监点击
Jul 20 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
同时提取多条新闻中的文本一例
2006/10/09 PHP
xss防御之php利用httponly防xss攻击
2014/03/21 PHP
php使用ZipArchive提示Fatal error: Class ZipArchive not found in的解决方法
2014/11/04 PHP
深入理解PHP原理之执行周期分析
2016/06/01 PHP
php结合mysql与mysqli扩展处理事务的方法
2016/06/29 PHP
PHP数据对象PDO操作技巧小结
2016/09/27 PHP
在php7中MongoDB实现模糊查询的方法详解
2017/05/03 PHP
PHP实现的多维数组排序算法分析
2018/02/10 PHP
PHP使用PhpSpreadsheet操作Excel实例详解
2020/03/26 PHP
javascript 避免闭包引发的问题
2009/03/17 Javascript
分享一个自定义的console类 让你不再纠结JS中的调试代码的兼容
2012/04/20 Javascript
JavaScript AJAX之惰性载入函数
2014/08/27 Javascript
Bootstrap嵌入jqGrid,使你的table牛逼起来
2016/05/05 Javascript
纯js实现倒计时功能
2017/01/06 Javascript
深入浅析Vue全局组件与局部组件的区别
2018/06/15 Javascript
微信小程序网络封装(简单高效)
2018/08/06 Javascript
单页面vue引入百度统计的使用方法示例详解
2018/10/13 Javascript
jQuery 同时获取多个标签的指定内容并储存为数组
2018/11/20 jQuery
详解wepy开发小程序踩过的坑(小结)
2019/05/22 Javascript
使用Angular material主题定义自己的组件库的配色体系
2019/09/04 Javascript
JS Ajax请求会话过期处理问题解决方法分析
2019/11/16 Javascript
[47:46]完美世界DOTA2联赛 Magma vs GXR 第三场 11.07
2020/11/10 DOTA
python在windows和linux下获得本机本地ip地址方法小结
2015/03/20 Python
python随机生成指定长度密码的方法
2015/04/04 Python
以一个投票程序的实例来讲解Python的Django框架使用
2016/02/18 Python
hmac模块生成加入了密钥的消息摘要详解
2018/01/11 Python
python3+PyQt5图形项的自定义和交互 python3实现page Designer应用程序
2020/07/20 Python
Python列表解析配合if else的方法
2018/06/23 Python
pyqt5实现按钮添加背景图片以及背景图片的切换方法
2019/06/13 Python
python替换字符串中的子串图文步骤
2019/06/19 Python
卸载tensorflow-cpu重装tensorflow-gpu操作
2020/06/23 Python
css3个性化字体_动力节点Java学院整理
2017/07/12 HTML / CSS
利用Bootstrap实现漂亮简洁的CSS3价格表实例源码
2017/03/02 HTML / CSS
MYSQL支持事务吗
2013/08/09 面试题
2014年学生党支部工作总结
2014/12/20 职场文书
关于职业道德的心得体会
2016/01/18 职场文书