0

JavaScriptオブジェクトを(JSON文字列として)WebページのURLに保存しようとしていますが、URLにHTMLリンクで機能しない文字が含まれています。

このページでは、JavaScriptオブジェクトがページのURLからロードされます。

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に埋め込むことは可能ですか?

4

2 に答える 2

7

JSON文字列をURLに配置する前に、URLエンコードすることで、URLにJSON文字列を配置できます。

encodeURIComponent(JSON.stringify(object))

あなたの例では、それは次のようになります。

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

ご想像のとおり、の反対はencodeURIComponentですdecodeURIComponent

于 2013-03-14T01:54:47.067 に答える
-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));
于 2013-03-14T01:50:01.200 に答える