2011-10-12 134 views
0

我試圖在JavaScript swfupload對象的選項數組中使用一個變量作爲「鍵」值。接收到ajax請求的頁面在繼續處理之前檢查會話名稱/ id,因此這些值是必需的。如何將js變量作爲鍵傳遞到選項數組

但是,由於會話名稱是可變的,我不能只是靜態地設置它。我想是這樣的:

var myid  = ".$php_pageid."; 
var sessionid = '".$php_sessionid."'; 
var sessionname = '".$php_sessionname."'; 
var swfu = new SWFUpload({ 
    // Backend Settings 
    upload_url: "index.php", 
    post_params: 
    { 
     "task" : "ajaxUpload", 
     "id" : myid, 
     sessionname : sessionid 
    }, 

然而,當我console.dir的swfu對象,它顯示

sessionname: "234630019cc86c366e1fa390ac737648" 

,而不是

d9fb7fb097782697802a63e5f65b765e: "234630019cc86c366e1fa390ac737648" 

的需要。

我知道我可以簡單地做

var swfu = new SWFUpload({ 
    // Backend Settings 
    upload_url: "index.php", 
    post_params: 
    { 
     "task" : "ajaxUpload", 
     "id" : myid, 
     "'.$php_sessionname.'" : "'.$php_sessionid.'" 
    }, 

但我的抽象JS到自己的文件,並在PHP文件設置所有瓦爾。

有沒有適當的方法來設置變量作爲選項對的關鍵?

回答

1

就做動態的,而不是聲明:

var params = { 
    "task" : "ajaxUpload", 
    "id" : myid 
}; 

params[sessionname] = sessionid; 

var swfu = new SWFUpload({ 
    // Backend Settings 
    upload_url: "index.php", 
    post_params: params, 
+1

這可能會被視爲安全風險,雖然。爲什麼要將會話名稱暴露給JavaScript?爲什麼不使用常量字符串? –

+0

嗨馬特 - 你能詳細說一下「使用一個常量字符串」嗎?謝謝 – julio

+0

使用常量鍵而不是會話名稱,例如'{... sessionname:sessionid ...}'。我很想知道爲什麼你會通過這個。看起來像一個漂亮的安全漏洞,或至少是一種代碼味道。 –