跨静态页面传递json数据

Others 2017-09-05 08:20:17 2017-09-05 08:20:17 3173 次浏览

今天又遇到了需要跨静态页面间传递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);