我正在尝试将JavaScript对象存储在网页的URL中(作为JSON字符串),但该URL包含一些不适用于HTML链接的字符。
在此页面上,从页面的URL加载JavaScript对象:
http://jsfiddle.net/tsUpC/1/show/#["Hello","World!"]
在此页面上,我正在尝试创建指向上面显示的同一页面的链接,但该URL包含超链接中不允许的字符:
<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中?
答案 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));