2013-02-12 118 views
0

我有編碼一個javascript的對象是這樣的代碼:字符串轉換爲JavaScript對象

<script> 
    var php_string='array("one"=>"value_one","two"=>"value_two")'; 
</script> 

現在我想知道我怎麼能轉換到這一點的是:

{ 
    "one":"value_one", 
    "two":"value_two" 
} 

php_string的內容通過$_POST變量發送給PHP。無論如何要這樣做,還是應該使用JSON?

編輯

至於問,這裏是使代碼我php_string

function encodeFormOptions(inputsWrapper){ 
    var the_serialize=$(inputsWrapper).find(":input").serializeArray(); 
    var text="array("; 
    $.each(the_serialize, function(key, value) { 
     text+='"'+value["name"]+'"=>'+'"'+value["value"]+'",'; 
    }); 
    if (text.charAt(text.length-1)==",") 
     text=text.substring(0,text.length-1); 
    text+=");"; 
    return text; 
} 

EDIT 2

我忘了說,我需要在純JavaScript這種轉換。換句話說,我需要將數組字符串解析爲javascript對象,因爲當我在頁面上點擊某個按鈕時,我需要讀取php_string內部的值。

EDIT 3(php_string的全部原因)

我試圖抽象的問題,但現在我知道我不應該這樣做了。

我有一些輸入的與多個按鈕命名爲「選項」

當我點擊這些按鈕的頁面形式,一個彈出窗口的動態領域(從上一個選擇字段中選擇的選項導出)在它上面,當我填寫所有的輸入時,我創建php_string並將其保存在隱藏字段中。

現在我希望當我再次點擊其中一個「選項」按鈕時,我可以讀取我保存在隱藏字段上的內容,以便將彈出輸入應顯示的默認值選擇字段不會更改。

隱藏的字段然後在PHP上解析。

+2

爲什麼不使用本地php數組(通過在POST中使用數組序列化),然後只是'json_encode'它呢? – prodigitalson 2013-02-12 16:05:53

+3

你最初是如何以PHP數組的字符串結束的? – SDC 2013-02-12 16:05:54

+6

問題的最後部分的答案是:「我應該用JSON來代替」,這是非常強調的「是的,你應該」。 – SDC 2013-02-12 16:08:08

回答

1

編輯:

看來這可能會接近你在找什麼:

<script> 
    var php_string = 'array("one"=>"value_one","two"=>"value_two")'; 
    var php_string = JSON.parse(php_string.replace(/array\(/g, '{').replace(/\)/g, '}').replace(/=>/g, ':')); 
</script> 

這當然不是,雖然處理它,所以考慮重構什麼正在生產輸出的最優雅的方式。例如,您可以從客戶端發送json,並在服務器端使用json_decode

+0

對不起,也許我沒有解釋清楚我的情況......我想通過Javascript將它轉換爲Object而不是PHP。我將編輯我的問題。 – 2013-02-12 16:15:26

+0

@CristianoSantos看到我的編輯。但是,在這兩種情況下,儘管你會在'php_string'中使用你的對象。 – Mahn 2013-02-12 16:18:05

+0

我認爲我沒有很好地表達我的問題。當我點擊一個按鈕時,這種轉換必須發生,所以我不能有任何PHP來幫助轉換。 – 2013-02-12 16:20:25