跨静态页面传递json数据
emer 发布于 2017-9-5 16:20 3157 次阅读
今天又遇到了需要跨静态页面间传递json数据的方法,总结总结,都有其优缺点,
1.利用cookie传值的方法:(注意有缺点,当存储数据比较多的时候就可能出现丢失,取得的cookie为空,所以提前估量数据量)
function setCookie(c_name, value, expiredays) { var exdate = new Date() ; exdate.setDate(exdate.getDate() + expiredays); document.cookie = c_name + "=" + escape(value) + ((expiredays == null) ? "" : ";expires=" + exdate.toGMTString()) } function getCookie(c_name) { if(document.cookie.length > 0) { c_start = document.cookie.indexOf(c_name + "=") if(c_start != -1) { c_start = c_start + c_name.length + 1 c_end = document.cookie.indexOf(";", c_start) if(c_end == -1) c_end = document.cookie.length return unescape(document.cookie.substring(c_start, c_end)) } } return "" } var ab = {"name":"1"} ab = JSON.stringify(ab); setCookie("acc12", ab) var a = getCookie("acc12"); console.log(a); a = JSON.parse(a); console.log(a[0]);
2.利用html5的localstorage和sessionstorage的方法(缺点:ie兼容性不好9以及9以上,安卓4.0及以上)
localStorage.setItem("ning","aa");//设置数据 var a=localStorage.getItem("ning");//提取数据
3.利用jquery,json5和base通过将url传递的值通过编码解码实现数据传递(优点:兼容性较好,缺点:传递数据的值的大小取决于url的量,是url冗长);
发送页面:
var data = [{"R_EAF_R_LEFTID":"5B2FF1C261F9"}]; var a = JSON5.stringify(data); //(需要引入json5库) var b = encodeURIComponent(a); // 先进行url编码,将中文字符转码 var c = $.base64.encode(b); // 再进行base64编码(需要引入base64库) window.location.href = 'b.html?' + c;
接收页面:
var sec = location.href.split('?')[1];
var a = $.base64.decode(sec);
var b = decodeURIComponent(a);
var c = JSON5.parse(b); //得到原json数据
console.log(c);