在页面的URL中嵌入JavaScript对象

时间:2013-03-14 01:46:08

标签: javascript html

我正在尝试将JavaScript对象存储在网页的URL中(作为JSON字符串),但该URL包含一些不适用于HTML链接的字符。

在此页面上,从页面的URL加载JavaScript对象:

http://jsfiddle.net/tsUpC/1/show/#["Hello","World!"]

在此页面上,我正在尝试创建指向上面显示的同一页面的链接,但该URL包含超链接中不允许的字符:

http://jsfiddle.net/M6dRb/

<a href = "http://jsfiddle.net/tsUpC/1/show/#["Hello","World!"]">This link doesn't work because the URL contains characters that are not allowed in HTML links.</a>

是否可以在不使用与超链接不兼容的字符的情况下将JavaScript对象嵌入到URL中?

2 个答案:

答案 0 :(得分:7)

在将URL放入URL之前,您可以通过URL编码将JSON字符串放入URL中:

encodeURIComponent(JSON.stringify(object))

your example中,那将是:

http://jsfiddle.net/tsUpC/1/show/#%5B%22Hello%22%2C%22World!%22%5D

正如您可能猜到的那样,encodeURIComponent的反面是decodeURIComponent

答案 1 :(得分:-1)

您需要使用JSON进行编码和解码

var link = document.getElementsByTagName('a')[0];
link.addEventListener('click', function(){
    // this could also be done with location.hash = JSON.stringify(...);
    var param = JSON.stringify(['your', 'array']),
        href = '#'+this.getAttribute('href');
    href += param;
    location.href = href;
}, false);


// make string an object/array again
var obj = JSON.parse(window.location.hash.substr(1));