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 相关文章推荐
JavaScript 学习笔记(六)
Dec 31 Javascript
往光标所在位置插入值的js代码
Sep 22 Javascript
ie8本地图片上传预览示例代码
Jan 12 Javascript
Jquery获取元素的父容器对象示例代码
Feb 10 Javascript
使用jquery菜单插件HoverTree仿京东无限级菜单
Dec 18 Javascript
vue2.0父子组件间通信的实现方法
Apr 19 Javascript
vue学习笔记之指令v-text &amp;&amp; v-html &amp;&amp; v-bind详解
May 12 Javascript
BootStrap表单验证 FormValidation 调整反馈图标位置的实例代码
May 17 Javascript
zTree树形菜单交互选项卡效果的实现方法
Dec 25 Javascript
Vuex的初探与实战小结
Nov 26 Javascript
微信小程序的线程架构【推荐】
May 14 Javascript
js实现图片推拉门效果代码实例
May 18 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
国王的咖啡这么大来头,名字的由来是什么
2021/03/03 咖啡文化
Smarty模板快速入门
2007/01/04 PHP
PHP的分页功能
2007/03/21 PHP
phpstorm编辑器乱码问题解决
2014/12/01 PHP
Yii框架实现图片上传的方法详解
2017/05/20 PHP
JS类库Bindows1.3中的内存释放方式分析
2007/03/08 Javascript
javascript 表格排序和表头浮动效果(扩展SortTable)
2009/04/07 Javascript
JS 字符串连接[性能比较]
2009/05/10 Javascript
30个最佳jQuery Lightbox效果插件分享
2011/04/11 Javascript
jQuery EasyUI API 中文文档 - Dialog对话框
2011/11/15 Javascript
浅析jquery的js图表组件highcharts
2014/03/06 Javascript
QQ登录背景闪动效果附效果演示源码下载
2015/09/22 Javascript
js中string和number类型互转换技巧(分享)
2016/11/28 Javascript
原生js jquery ajax请求以及jsonp的调用方法
2017/08/04 jQuery
详解nodeJs文件系统(fs)与流(stream)
2018/01/24 NodeJs
vue 双向数据绑定的实现学习之监听器的实现方法
2018/11/30 Javascript
说说Vuex的getters属性的具体用法
2019/04/15 Javascript
小程序异步问题之多个网络请求依次执行并依次收集请求结果
2019/05/05 Javascript
vue实现固定位置显示功能
2019/05/30 Javascript
JS异步处理的进化史深入讲解
2019/08/25 Javascript
vue实现把接口单独存放在一个文件方式
2020/08/13 Javascript
[25:59]Newbee vs TNC 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python使用urllib2实现发送带cookie的请求
2015/04/28 Python
如何利用Boost.Python实现Python C/C++混合编程详解
2018/11/08 Python
python实现海螺图片的方法示例
2019/05/12 Python
使用python matploblib库绘制准确率,损失率折线图
2020/06/16 Python
详解Python多线程下的list
2020/07/03 Python
Python如何进行时间处理
2020/08/06 Python
python归并排序算法过程实例讲解
2020/11/04 Python
基于Python爬取搜狐证券股票过程解析
2020/11/18 Python
科研先进个人典型材料
2014/01/31 职场文书
聚美优品广告词改编
2014/03/14 职场文书
意外伤害赔偿协议书范文
2014/09/23 职场文书
2015年医务人员医德医风自我评价
2015/03/03 职场文书
文明礼貌主题班会
2015/08/14 职场文书
pytorch MSELoss计算平均的实现方法
2021/05/12 Python