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 相关文章推荐
Js动态创建div
Sep 25 Javascript
6款新颖的jQuery和CSS3进度条插件推荐
Mar 05 Javascript
nw.js实现类似微信的聊天软件
Mar 16 Javascript
JavaScript中使用Math.floor()方法对数字取整
Jun 15 Javascript
深入浅析Extjs中store分组功能的使用方法
Apr 20 Javascript
IOS中safari下的select下拉菜单文字过长不换行的解决方法
Sep 26 Javascript
javascript显示系统当前时间代码
Dec 29 Javascript
使用JavaScript实现点击循环切换图片效果
Sep 03 Javascript
在Vue组件中获取全局的点击事件方法
Sep 06 Javascript
vue打包之后生成一个配置文件修改接口的方法
Dec 09 Javascript
ES6知识点整理之对象解构赋值应用示例
Apr 17 Javascript
浅谈webpack和webpack-cli模块源码分析
Jan 19 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中使用cookie来保存用户登录信息的实现代码
2012/03/08 PHP
PHP处理excel cvs表格的方法实例介绍
2013/05/13 PHP
php计算两个文件相对路径的方法
2015/03/14 PHP
php给一组指定关键词添加span标签的方法
2015/03/31 PHP
php实现格式化多行文本为Js可用格式
2015/04/15 PHP
十大使用PHP框架的理由
2015/09/26 PHP
phpStudy2016 配置多个域名期间遇到的问题小结
2017/10/19 PHP
用js查找法实现当前栏目的高亮显示的代码
2007/11/24 Javascript
XMLHTTP 乱码的解决方法(UTF8,GB2312 编码 解码)
2011/01/12 Javascript
ASP.NET jQuery 实例15 通过控件CustomValidator验证CheckBoxList
2012/02/03 Javascript
javascript针对DOM的应用分析(四)
2012/04/15 Javascript
仿微博字符限制效果实现代码
2012/04/20 Javascript
createTextRange()的使用示例含文本框选中部分文字内容
2014/02/24 Javascript
基于jQuery+JSON的省市二三级联动效果
2015/06/05 Javascript
jQuery实现的超简单点赞效果实例分析
2015/12/31 Javascript
基于vue2的table分页组件实现方法
2017/03/20 Javascript
Vue学习笔记进阶篇之过渡状态详解
2017/07/14 Javascript
JavaScript实现换肤功能
2017/09/15 Javascript
JS Testing Properties 判断属性是否在对象里的方法
2017/10/01 Javascript
用jquery获取select标签中选中的option值及文本的示例
2018/01/25 jQuery
Mac下通过brew安装指定版本的nodejs教程
2018/05/17 NodeJs
10个最受欢迎的 JavaScript框架(推荐)
2019/04/24 Javascript
利用layer实现表单完美验证的方法
2019/09/26 Javascript
vue中监听路由参数的变化及方法
2019/12/06 Javascript
微信小程序button标签open-type属性原理解析
2020/01/21 Javascript
Element Dialog对话框的使用示例
2020/07/26 Javascript
python接口自动化测试之接口数据依赖的实现方法
2019/04/26 Python
Django使用list对单个或者多个字段求values值实例
2020/03/31 Python
解决django migrate报错ORA-02000: missing ALWAYS keyword
2020/07/02 Python
工厂保安员岗位职责
2014/01/31 职场文书
医院安全生产月活动总结
2014/07/05 职场文书
人大调研汇报材料
2014/08/14 职场文书
纪律教育学习月活动总结
2014/08/27 职场文书
无犯罪记录证明样本
2015/06/16 职场文书
python3实现常见的排序算法(示例代码)
2021/07/04 Python
小程序自定义轮播图圆点组件
2022/06/25 Javascript