如何通过url传递js对象
我有一个js对象
var info = {
status: 1 ,
time: "10:00:00-12:00:00" ,
weekdays: {
"monday",
"tuesday"
}
};
我不想使用序列化,我想要像“localhost / jstest / #test?info”
我有什么方法可以实现这个目标
答案 0 :(得分:4)
您将不得不以某种方式对其进行序列化。您可以通过存储表示对象的JSON字符串,以您建议的方式执行此操作。 sessionStorage
,并传递密钥的名称:
sessionStorage.setItem("info", JSON.stringify(info));
window.location("localhost/jstest/#test?info");
然后,您可以访问该密钥中存储的数据:
var info = JSON.parse(sessionStorage.getItem("info"));
答案 1 :(得分:1)
您可以使用hashtag创建自己的查询字符串,然后从代码中的url / hashtag获取数据以检索数据。
像这样: localhost/jstest/#info!status=1!time=10:00:00-12:00:00!weekdays=monday,tuesday
然后,您可以在此处找到有关如何阅读#标签数据的更多帮助:Working with single page websites and maintaining state using a URL hash and jQuery
答案 2 :(得分:0)
这是我的解决方案。
在使用 base64 编码使该字符串安全以用于 URL 之后,您首先将对象转换为 JSON。
请注意,这使用了一个额外的插件 jquery.base64.js
来处理 base64。您可以使用自己的图书馆。
function packer(o){
var str = JSON.stringify(a);
var mess = $.base64.encode(str);
return mess.replace(/\+/g,'-').replace(/\//g,'_').replace(/=/g,',');
}
function unpacker(str){
var mess = str.replace(/-/g,'+').replace(/_/g,'/').replace(/,/g,'=');
mess = $.base64.decode(mess);
return JSON.parse(mess);
}