月归档:2011 年六月

解决utf-8编码页面js读取cookie乱码

点击按钮,根据判断cookie里是否有用户名判断弹出登陆框还是二次确认密码框,最开始想到用就是js读取cookie,从网上抄了一段代码 //读取cookies function getCookie(name) {  var arr,reg=new RegExp(“(^| )”+name+”=([^;]*)(;|$)”);  if(arr=document.cookie.match(reg)){  return decodeURIComponent(arr[2]);  //return unescape(arr[2]);  }else{   return null; } } 发现中文乱码,后来就想到直接从php里面读取了cookie传值给页面的js解决了。。。 今天有人反馈说登陆了出来的还是登陆框,后来分析了一下,是因为他可能是打开这个页面,去其他站点登陆(几个站点用uc做的同步登陆设置cookie),然后再回到这个页面没做刷新出现的这个问题。(你不刷新php的变量怎么改变给js呢,你当然不能跟提需求的说以后刷新了再点击,也不能自己加个js让按钮点了就把页面刷一下是吧,肯定会挨批的。。。)。只有即时读取cookie吧,不刷新页面只有用js读取吧。但是乱码很头疼。又搜了一遍,用decodeURIComponent解决了。 我的页面编码统一都是utf-8,如果是gbk,可能要用unescape之类,具体没研究。

发表在 默认分类 | 标签为 | 留下评论

iframe缓存问题

页面有多个iframe时,容易窜位,即时你给src的链接加个php生成的随机数也不行。改成用js生成iframe就可以了。

发表在 Javascript | 标签为 , | 留下评论

iframe退出相关

aa.xx.com用iframe引入的www.xx.com的一个头部登陆条,有退出链接也是同步退出的(原理就是ajax去请求 然后输出<script src=“www.yy.com/….通信密钥。。”输出时要请求很多东西(这种思想可以借鉴,而不只是为要返回值而返回数据,可以用来做请求。)。就是uchome同步登陆那一套,用的fscokopen(),原理可参考:http://hi.baidu.com/zxsz4085/blog/item/549076ca08924912bf09e659.html) 现在说头部不要那个登陆条了,但是要在登陆后的页面其他地方做个退出链接,晕倒。 就想用js在父页面点子页面的退出,网上搜: 把头部登陆条display为none藏起来 其他地方加个链接 onclick=”document.getElementById(‘iframe_head’).contentDocument.getElementById(‘link_logout’).click();” 火狐说没权限。。。 试试本地,在本地项目下建立了一个页面就放了一个button 让它点击时就提示xxx,让头部iframe改成引用这个页面,结果发现头部iframe隐藏时,通过点击自己的退出链接无法触发点击button,显示iframe时就可以提示xxx 头疼,无赖,又做了个 iframe 把width和height设置得都很小,里面就一个退出链接,事件从头部登陆条的页面拷过来。写个方法供最底层刷新页面。  

发表在 默认分类 | 标签为 , , | 留下评论

iframe登陆相关

最近在子站点http://aa.xx.com用iframe引 用http://www.xx.com 的登陆框,因为www那边登陆还没做成服务,但是要涉及其他几个网站的同步登陆,目前是只有走那个登陆框提交表单才能触发同步登陆。 开始以为是个很简单的事情,在www那边的登陆表单用ajax登陆成功后就调用parent.window.location.reload();火狐错误控制台提示没权限哦。然后在本地项目建立了一个文件,iframe的src指向它,可以提示消息。想不明白,都是xx.com 怎么就不行了。 无奈,看了之前别人引用的一个头部登陆条里搞明白了。 比如:aa.xx.com 这边有个文件 1. login.html 这边页面写个js方法用来刷新页面。  function reload_page(){   window.location.reload(); } iframe引用了www.xx.com 那边的一个文件 iframe_login_header.html 2. iframe_login_header.html 页面 有个iframe   src为空 , 用ajax请求登陆程序处理成功后,给src指向 aa.xx.com 这边的一个页面reload.html 3. reload.html页面里啥也不用干,就调用顶级页面的方法。你可以在reload_page()里做其他处理,而不只是登陆后刷新页面。 window.top.reload_page();

发表在 默认分类 | 标签为 , | 留下评论

通过jsonp实现跨越应用示例

转载自:http://www.smallgang.cn/index.php/JavaScript/jsonp.html   什么是JSONP协议? JSONP即JSON with Padding。由于同源策略的限制,XmlHttpRequest只允许请求当前源(域名、协议、端口)的资源。如果要进行跨域请求,我们可以通过使用html的script标记来进行跨域请求,并在响应中返回要执行的script代码,其中可以直接使用JSON传递javascript对象。这种跨域的通讯方式称为JSONP。 很明显,JSONP是一种脚本注入(Script Injection)行为,需要特别注意其安全性。 站点www.87end.cnd的php代码(jsonp.php) //ajax接收的参数$action = $_GET['act'];$name = $_GET['name']; call_user_func($action, $name); function sayHello($name) {    $callback = trim($_GET['jsoncallback']);    $arr = array(‘msg’=>’hello ‘ . $name);    echo $callback.”(“.json_encode($arr).”);”;} 站点www.smallgang.cn的 JS脚本(jsonp.html), 用jquery的ajax,有两种实现方式 方法一: jQuery.getJSON(url,[data],[callback])$.getJSON(“http://www.87end.cn/jsonp.php?act=sayHello&name=xiaogang&jsoncallback=?”,     function(data){         alert(data.msg);     }  ); 方法二:jQuery.ajax(options)$.ajax({ … 继续阅读

发表在 Ajax | 标签为 , , | 留下评论