«

跨静态页面传递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);