7月工作小结

从项目开始到正式上线,已连续加了8天的班,感觉身体被掏空。。。

现将工作中碰到的问题慢慢分享出来,做一个不大不小的总结吧。


BUG1:IOS、safari对javascrpt中的new date()方法有兼容问题,具体来说就是当使用如下形式:

new date('2017-07-31');最后执行出来显示的结果会是NaN-NaN-NaN,而在安卓或其他浏览器则不存在这种问题。


解决方法:new date( '2017/07/31' );,换个格式就能正常显示了!


BUG2: 静态页面间数据传递

项目中需要将当前页面ajax请求的部分数据传递到下个页面,一开始考虑是否能够再走一次后台ajax比较方便,但项目主管表示服务器压力会很大,只能另辟蹊径。

由于制作的是个web app,便想到用最原始的url传值,安全性虽差,但由于后台数据有加密问题也不大。

具体来说就是: window.location.href = xxx.html?id=xx&pwd=xx&customerCode=xx

但实际使用后发现有一个很严重的bug!那就是只能传递对象参数,一旦传递json数组且其中有中文字符便会出现乱码。

上网一查就知道是编码的问题,于是就在发送端增加了编码,接收端设置解码:

var aJson = [ {name:张三, age:27}, {...}, {...} ]

window.location.href = xxx.html?aJson=encodeURI(aJson)&......


接收页面:

//解析url,获得url传参

var Request = new Object();
Request = GetRequest();


//解析url传参方法
function GetRequest() {   
  var url = location.search; //获取url中"?"符后的字串  
  var theRequest = new Object();   
  if (url.indexOf("?") != -1) {   
    var str = url.substr(1);   
    strs = str.split("&");   
    for(var i = 0; i < strs.length; i ++) {   

      theRequest[strs[i].split("=")[0]] = decodeURI(strs[i].split("=")[1]);  
    }   
  }   
  return theRequest;   

实测这种方法也并不可行,还是会出现乱码。

后来花了很长时间查找资料发现问题出在数据格式上,就是encodeURI()和decodeURI()方法只能对字符串进行处理,

而我们需要的数据仍是对象自然无法编/解码成功。


修改代码如下:

使用JSON.stringify()对对象进行字符串化处理

JSON.parse()对字符串进行对象化处理

window.location.href = xxx.html?name=encodeURI(JSON.stringify(aJson))&......


var dataAjson = JSON.parse(Request.aJson);

如此便能从dataAjson对象中取出想要的数据了。


虽然说用上面的方法可以顺利解决这个问题,但url传值仍旧不是正道,各位看官如有更好的解决方案请不吝赐教!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值