今天在研究腾讯的第三方接入 ,参照 腾讯JS SDK 很容易完成对QQ登陆框的部署。
遇到的一个必经的问题是,如何把js变量存入数据库中。
1 。 实际需求是把 openId 以及 accessToken 存入mysql中 ,以便维护用户的信息、
<script type="text/javascript"> if(QC.Login.check()){//如果已登录 QC.Login.getMe(function(openId, accessToken){ alert(["当前登录用户的", "openId为:"+openId, "accessToken为:"+accessToken].join("\n")); }); //这里可以调用自己的保存接口 //... } </script>
2。由于对于JS 并不熟悉,百度谷歌了很多方法 。
1) 可以使用URL + 参数 ,刷新页面将参数 传递给服务端 。
var params ;window.location.href = "www.example.com?params="+params;
2) 可以使用 JS Cookie ,将JS变量存储在Cookie中。
<script language="JavaScript" type="text/javascript"> function addCookie(objName,objValue,objHours){//添加cookie var str = objName + "=" + escape(objValue); if(objHours > 0){//为0时不设定过期时间,浏览器关闭时cookie自动消失 var date = new Date(); var ms = objHours*3600*1000; date.setTime(date.getTime() + ms); str += "; expires=" + date.toGMTString(); } document.cookie = str; alert("添加cookie成功"); } function getCookie(objName){//获取指定名称的cookie的值 var arrStr = document.cookie.split("; "); for(var i = 0;i < arrStr.length;i ++){ var temp = arrStr[i].split("="); if(temp[0] == objName) return unescape(temp[1]); } } function delCookie(name){//为了删除指定名称的cookie,可以将其过期时间设定为一个过去的时间 var date = new Date(); date.setTime(date.getTime() - 10000); document.cookie = name + "=a; expires=" + date.toGMTString(); } function allCookie(){//读取所有保存的cookie字符串 var str = document.cookie; if(str == ""){ str = "没有保存任何cookie"; } alert(str); } function $(m,n){ return document.forms[m].elements[n].value; } function add_(){ var cookie_name = $("myform","cookie_name"); var cookie_value = $("myform","cookie_value"); var cookie_expireHours = $("myform","cookie_expiresHours"); addCookie(cookie_name,cookie_value,cookie_expireHours); } function get_(){ var cookie_name = $("myform","cookie_name"); var cookie_value = getCookie(cookie_name); alert(cookie_value); } function del_(){ var cookie_name = $("myform","cookie_name"); delCookie(cookie_name); alert("删除成功"); } </script>
3 ) 使用Ajax 。
(1).创建 XMLHttpRequest 对象
为了应对所有的现代浏览器,包括
IE5 和 IE6,请检查浏览器是否支持 XMLHttpRequest 对象。如果支持,则创建 XMLHttpRequest 对象。如果不支持,则创建 ActiveXObject :
var xmlhttp; if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); }
然后调用XMLHttpRequest 的open() ,send()方法
xmlhttp.open("GET","demo.php?fname=Bill&lname=Gates",true); xmlhttp.send();
即可在demo.php 页面通过$_GET['fname'],$_GET['lname']获得 ,在大部分情况下GET 方式发送数据都是可行的