jquery 跨域访问问题解决方法(笔记)


Posted in Javascript onJune 08, 2011

这两天需要实现三级域名直接url rewrite到网站静态页面,如 http://123.456.789.com/ UrlRewrite到http://www.789.com/news/123.html

说到这里,也许和js跨域访问没有半点关系,在脑海里排列这的问题都是和UrlRewrite相关的。好吧现在URLRewrite一切就绪,直接在浏览器地址栏中输入http://123.456.789.com/ 会发现,这个在地址栏直接通过http://www.789.com/news/123.html来访问的页面出现了异常,网页上的图片和样式还有JS好像都失去了作用。

看看两个地址栏中的URL, 突然拍拍自己脑袋,有点思路了。原来这个页面的源代码中对图片、CSS、JS 都是通过相对路径来请求的。当然这在 直接访问http://www.789.com/news/123.html的路径是不会有问题的,但是当使用http://123.456.789.com/访问后 看看地址栏两个URL 明显路径已经完全不一样了,比如images/1.gif 在1中 相当于请求http://www.789.com/news/1.gif 而再2中变成什么http://123.456.789.com/images/1.gif很显然这个图片你是永远也请求不到。因为这个路径下你永远也找不到这个图片。好了为了简便,我们不用网上别人介绍的很多种方法,就用绝对路径解决吧。好的,一切看起来这么的自然,这么的畅快。但是真正的麻烦还在后边。

一直到这里,好像和我们的标题都不搭噶。别急,问题总是解决一个再冒出第二个。

首先讲讲我这个页面吧,这个页面是通过程序将本来动态呈现的东西进行了静态化,但是静态化页面里边又必须显示一些变化的信息,这里很多人可能会想到使用IFRAME来解决,但是这样的解决办法不是我想使用的,1.IFRAME比起其它方法,效率低,2.IFRAME对爬行蜘蛛不友好。所以我这里最开始是使用JQUERY的load函数还直接去请求动态页面然后将返回来的动态信息显示在静态化页面里。好了,讲到这里可能有些朋友已经知道为什么这篇日记的名字叫“jquery跨域访问问题”了。

首先看看 jquery load函数里我的参数$("#head").load("http://www.cnblogs.com/project/ajax.php"{"Action":"head"}); 当然通过上边的教训 已经将参数换成了$("#head").load("http://www.789.com/project/ajax.php"{"Action":"head"}); 但是还是出现了“jquery.js 138行无权访问”直接跑去查看juqery138行 哄哄原来是load函数这里出问题(没看懂源码,说实话太折磨人了,一堆压缩后的JS代码看得人想死)好吧去网上谷歌一下,有几个人的答案引起了我的注意。他们都说这是JS跨域操作的问题。而本身JS是无法直接跨域操作的。再联系自己三级域名URLRewrite 再想想跨域的问题,三级域名下 所在的域是789 下的456 下的123 而本身请求的是789.com域名下 所以这不是跨域是什么呢?豁然开朗。我确定我找到问题所在了。

继续谷歌,很多人推荐jquery getJson使用回调函数解决,关于原理等解决了再慢慢研究,呵呵继续搜http://blog.ossxp.com/2010/02/462/这篇文章很好给了我很大帮助,直接在自己项目中还是依葫芦画瓢。问题解决!

 html页面 jquery代码

$.getJSON("http://www.789.com/project/ajax.php?Action=head&callback=?", 
function(data){ // 往后台传递的参数1; 
var html = decodeURI(data.str) 
$('#head').html(html); //调用用来显示内容的div 
});

服务器端PHP代码
$str = "<ul> 
this is test 
</ul>"; 
$arr['str'] = $str; 
$json = json_encode($arr); //用Json_encode函数处理php的数组 
echo $_GET['callback']."(".$json.")";

到此通过三级域名URLREWRITE到静态化页面跨域访问服务器动态类容问题圆满解决!
Javascript 相关文章推荐
兼容ie和firefox js关闭代码
Dec 11 Javascript
javascript预览上传图片发现的问题的解决方法
Nov 25 Javascript
Javascript 实现的数独解题算法网页实例
Oct 15 Javascript
js中数组(Array)的排序(sort)注意事项说明
Jan 24 Javascript
JavaScript+html5 canvas绘制的小人效果
Jan 27 Javascript
Bootstrap页面布局基础知识全面解析
Jun 13 Javascript
Bootstrap基本组件学习笔记之分页(12)
Dec 08 Javascript
jQuery简单绑定单个事件的方法示例
Jun 10 jQuery
Angular中的interceptors拦截器
Jun 25 Javascript
快速了解vue-cli 3.0 新特性
Feb 28 Javascript
Vue表单输入绑定的示例代码
Nov 01 Javascript
js定时器出现第一次延迟的原因及解决方法
Jan 04 Javascript
精通Javascript系列之数据类型 字符串
Jun 08 #Javascript
精通Javascript系列之Javascript基础篇
Jun 07 #Javascript
精通Javascript系列之数值计算
Jun 07 #Javascript
jQuery 源码分析笔记(4) Ready函数
Jun 02 #Javascript
在IE 浏览器中使用 jquery的fadeIn() 效果 英文字符字体加粗
Jun 02 #Javascript
JqGrid web打印实现代码
May 31 #Javascript
16个最流行的JavaScript框架[推荐]
May 29 #Javascript
You might like
PHP 第二节 数据类型之数值型
2012/04/28 PHP
PHP读取文件并可支持远程文件的代码分享
2012/10/03 PHP
php获得文件大小和文件创建时间的方法
2015/03/13 PHP
PHP7 整型处理机制修改
2021/03/09 PHP
js实现运行代码需要刷新的解决方法
2007/08/18 Javascript
用document.documentElement取代document.body的原因分析
2009/11/12 Javascript
js导出格式化的excel 实例方法
2013/07/17 Javascript
JQuery each()嵌套使用小结
2014/04/18 Javascript
JSON+Jquery省市区三级联动
2016/01/13 Javascript
AngularJS使用ngOption实现下拉列表的实例代码
2016/01/23 Javascript
Vue.js中数据绑定的语法教程
2017/06/02 Javascript
Easy UI动态树点击文字实现展开关闭功能
2017/09/30 Javascript
three.js中文文档学习之创建场景
2017/11/20 Javascript
ionic2中使用自动生成器的方法
2018/03/04 Javascript
vue 项目中使用Loading组件的示例代码
2018/08/31 Javascript
Vue.js中 v-model 指令的修饰符详解
2018/12/03 Javascript
创建nuxt.js项目流程图解
2020/03/13 Javascript
Python实现3行代码解简单的一元一次方程
2014/08/18 Python
Python的subprocess模块总结
2014/11/07 Python
numpy给array增加维度np.newaxis的实例
2018/11/01 Python
如何利用Python模拟GitHub登录详解
2019/07/15 Python
Python 用三行代码提取PDF表格数据
2019/10/13 Python
pytorch+lstm实现的pos示例
2020/01/14 Python
HTML5中在title标题标签里设置小图标的方法
2020/06/23 HTML / CSS
澳大利亚领先的孕妇服装品牌:Mamaway
2018/08/14 全球购物
StubHub新西兰:购买和出售你的门票
2019/04/22 全球购物
俄罗斯在线手表和珠宝商店:AllTime
2019/09/28 全球购物
开学季活动策划方案
2014/02/28 职场文书
2015年清明节网上祭英烈留言寄语
2015/03/04 职场文书
出国留学自荐信模板
2015/03/06 职场文书
投资公司董事长岗位职责
2015/04/16 职场文书
python用字节处理文件实例讲解
2021/04/13 Python
Python控制台输出俄罗斯方块的方法实例
2021/04/17 Python
Python机器学习算法之决策树算法的实现与优缺点
2021/05/13 Python
MySQL 服务和数据库管理
2021/11/11 MySQL
ORACLE中dbms_output.put_line输出问题的解决过程
2022/06/28 Oracle