9

how to pass a js object through url

i have a js object

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

i don't want to use serialize, i want something like "localhost/jstest/#test?info"

Is there any way i can achieve this

user1400191
  • 149
  • 1
  • 3
  • 10

3 Answers3

8

You are going to have to serialize it one way or another. You could do it in the way you suggest by storing a JSON string representing your object in e.g. sessionStorage, and passing the name of the key:

sessionStorage.setItem("info", JSON.stringify(info));
window.location("localhost/jstest/#test?info");

You can then access the data stored in that key:

var info = JSON.parse(sessionStorage.getItem("info"));
James Allardice
  • 164,175
  • 21
  • 332
  • 312
1

You can create your own querystring with the hashtag, then get the data from the url/hashtag in your code to retrieve the data.

like this:

localhost/jstest/#info!status=1!time=10:00:00-12:00:00!weekdays=monday,tuesday

Then you can find more help on how to read the hashtag data here: Working with single page websites and maintaining state using a URL hash and jQuery

Community
  • 1
  • 1
Control Freak
  • 12,965
  • 30
  • 94
  • 145
0

This is my solution. Here you convert your object to JSON first, after making that string safe with base64 encoding for use in URL. Note this uses an additional plugin jquery.base64.js for working with base64. You can use your own library.

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

msangel
  • 9,895
  • 3
  • 50
  • 69