2010-07-23 153 views
2

這裏是我的代碼:如何通過URL傳遞JavaScript對象

function show() 
{ 
    var parameters = new Object(); 
    parameters.F1MBFC = 'N'; 
    parameters.F1MCSI = 'N'; 
    parameters.F1MMCY = 'N'; 
    parameters.F1NACD = 'B'; 
    parameters.F1RVCR = 'N'; 

    parameters.SOURCEFILED = '_fld:FACILITY7'; 

    showPopWin('http://mysite/popupForm.aspx', 650, 450, null); 
} 

我如何可以通過在URL的對象參數的參數? 任何想法?

+0

下面是我找到的解決方案:http://stackoverflow.com/questions/15399749/embedding-javascript-objects-in-a-pages-url/15399819#15399819 – 2013-03-14 03:04:54

回答

3

如果你實際上是自己打開的窗口與JavaScript,然後:

var win = window.open("foo"); 
win.document.SomeObject = "hello"; 

然後在代碼的其它頁面:

alert(document.SomeObject); 

您也可以訪問調用者(視瀏覽可能)通過window.opener屬性。我可能會遇到一些小錯誤,但你會得到一般想法。

0

您可以序列化並將其作爲字符串添加到URL中,並在使用前將其反序列化。

1

您可以序列化您的對象並將其作爲get參數傳遞。

這裏是如何序列在JavaScript對象:

var a = { 
    name: "alexn", 
    age: 20 
}; 

a.toSource(); 

yields "({name:"alexn", age:20})" 

您應該能夠使用以下命令:

showPopWin('http://mysite/popupForm.aspx?parameter=' + parameters.toSource(), 650, 450, null); 
+1

雖然有爭議的價值,但值得注意的是,這種方法會產生XSS的重要攻擊向量。我會不惜一切代價避免這樣做。 – 2010-07-23 08:27:56

+0

@silky你是對的。最好的事情可能是把它存儲在一個sesion中。 – alexn 2010-07-23 08:40:14

0

正如已經提到的,你可以序列化對象和閱讀新一頁。但是我會補充一點,如果你可以控制打開頁面的源代碼,那麼你可以從新窗口訪問父窗口以獲得你想要的值。