如何通过javascript中的url将对象作为单个var传递

时间:2012-06-16 11:25:09

标签: jquery url object

如何通过url传递js对象

我有一个js对象

var info = {
    status: 1 ,
    time: "10:00:00-12:00:00" ,
    weekdays: {
      "monday",
      "tuesday"
    }
};

不想使用序列化,我想要像“localhost / jstest / #test?info”

我有什么方法可以实现这个目标

3 个答案:

答案 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);
}