我想將屬性添加到對象並將該對象傳遞給另一個頁面。如何在多個頁面上使用一個JavaScript對象?
回答
有幾件事情:
- 我會在命名空間中組合功能;
- 你不需要Base64編碼,因爲
encodeURIComponent()
就足夠了; - 這不適用於大型物體,因此您需要
localStorage
; - 你的代碼有幾個疑難雜症,比如當一個href已經包含一個
?
;
我已經重新設計它像這樣:
DataTransferService = {
sendToUrl: function(obj, url, name) {
var value = JSON.stringify(obj);
name = name || 'data';
return url + (url.indexOf('?') === -1 ? '?' : '&') + name + '=' + encodeURIComponent(value);
},
receiveFromCurrentUrl: function(name) {
return receiveFromUrl(window.location.href, name);
},
receiveFromUrl: function(url, name) {
var value;
name = name || 'data';
url = url || window.location.href;
if ((value = this.getUrlParameter(name, url)) !== null) {
return JSON.parse(value);
}
},
getUrlParameter:function(name, url) {
var p, qs;
if ((p = url.indexOf('?')) === -1) {
return null;
}
qs = url.substr(p + 1).split('&');
for (var i = 0, len = qs.length; i != len; ++i) {
var pair = qs[i].split('=');
if (pair[0] === name) {
return decodeURIComponent(pair[1]);
}
}
return null;
}
};
要使用:
var obj = {
a: 123,
b: 456,
c: [1, 3, 5]
};
var url = DataTransferService.sendToUrl(obj, '/path/to/page');
// "/path/to/page?data=..."
location = url;
在接收頁:
var obj = DataTransferService.receiveFromCurrentUrl();
// work with obj here
功能擺在全局js文件..
function GotoPage(relUrl) {
var json = JSON.stringify({param1:val1, param2:val2});
window.location.href = relUrl.concat('?data=').concat(Base64.encode(json));
}
function GetUrlVars() {
var vars = [], hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for (var i = 0; i < hashes.length; i++) {
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
}
假設我們從第1頁導航至第二頁。在第2頁的js文件,你會寫:
var base64data = GetUrlVars()['data']
var jsondata = Base64.decode(base64data)
var data = JSON.parse(data);
var param1 = data.param1;
//do something with the objects properties
對於在Base64
實現見:How can you encode a string to Base64 in JavaScript?
如果你想保持你的網址乾淨,你可以使用cookie。 – mika 2013-02-09 06:28:21
請記住,如果您想將對象放入函數中,這會失敗,因爲您將對象序列化爲JSON,並且JSON僅支持數據。 – KaeruCT 2013-02-09 06:33:26
不錯的努力,但不理想。 url限制怎麼樣?那麼,你放棄了大件物品?我會去當地的存儲 – allenhwkim 2013-02-09 06:53:31
- 1. 在原型對象爲javascript的頁面上使用兩個或多個圖像
- 2. 使用Javascript在一個頁面上創建多個實例
- 3. 如何從一個頁面到另一個頁面使用JavaScript?
- 4. 如何將JavaScript對象從一個頁面發送到另一個頁面?
- 5. 如何在一個頁面上使用多個剪輯?
- 6. 如何在頁面對象工廠使用多個標識
- 7. wordpress:如何在一個頁面上顯示多個頁面?
- 8. 如何在同一頁面上使用javascript將對象從一個列表移動到另一個列表
- 9. 如何使用JavaScript在頁面上提交第一個表單?
- 10. 如何使用JavaScript/jQuery激活一個頁面上的多個按鈕?
- 11. 在同一頁面上的多個Facebook opengraph對象
- 12. 如何在頁面上正確測試一個對象
- 13. 多個ModalPopupExtenders在一個頁面上,每個都帶有javascript
- 14. 如何在一個頁面上運行多個Ajax調用
- 15. 如何爲多個對象使用一個對象池
- 16. 使用javascript在單個頁面上減少多個數字使用javascript
- 17. 如何確定頁面上有多少個jQuery對象?
- 18. 如何在單個頁面上使用多個jQuery AutoSuggest?
- 19. 如何使用EWZRecaptchaBundle在單個頁面上顯示多個recaptchas?
- 20. 如何在單個頁面上使用多個jssor滑塊
- 21. 在一個頁面上的多個SimpleModals
- 22. 樹圖:在一個頁面上多個
- 23. 任何方式在多個頁面上攜帶gapi.client對象?
- 24. 如何使用值對象重定向另一個頁面
- 25. jQuery jFlow插件。我如何在單個頁面上使用多個頁面?
- 26. 使用css3/javascript跨多個對象轉換多個對象
- 27. 如何在一個對象內創建一個javascript對象?
- 28. 可以在一個HTML頁面上使用2個Javascript庫嗎?
- 29. 一個測試用例中的多個頁面對象
- 30. 的JavaScript如何使用一個變量引用一個對象
也許你正在尋找[' localStorage'](https://developer.mozilla.org/en-US/docs/DOM/Storage)? – 2013-02-09 06:28:33
他回答了他自己的問題@Jack hahah:P他發佈給其他人 – 2013-02-09 06:29:00