2009-11-17 168 views
1

我有一個關聯數組在php中,我想堅持到一個隱藏的表單輸入,以便我以後可以在JavaScript中獲取值。由於引用問題,我需要對json進行urlencode編碼,或者對其進行編碼。然而,一旦我在javascript中擁有這個對象,最簡單的方法是什麼讓它回到純粹的'json?有沒有一個JavaScript的PHP的urldecode或html_entity_decode()的等價物?

或者有沒有更好的方法來解決這個問題? AJAX在這裏似乎有點過分 - 我寧願預先在頁面上填充數據,而不是設置多個請求。我想我可以將php對象寫入到php生成的腳本標記中的頁面中,但這看起來有點麻煩,而且我不確定在每種可能的情況下都會解析[scripts]。

+0

[Javascript的當量可能重複的HTML \ _entity \ _decode不依賴於innerHTML?](http://stackoverflow.com/questions/3302353/javascript-equivalent-of-html-entity-decode-that-doesnt-rely-on-innerhtml) – rubo77 2013-11-22 09:50:25

回答

3

如果您將數據粘貼到某個字段中,則可以使用decodeURIComponent來解碼該值。例如:

decodeURIComponent("%5b'hello'%2c%20'world'%5d"); // ['hello', 'world'] 

另一個辦法可能是嵌入JSON對象在輸出PHP一個<script>元件。你甚至可以將JSON對象作爲參數存儲在某個地方。

<script>setupData(<?= toJSON(['hello', 'world']) ?>)</script> 

當頁面加載setupData將與字面['hello', 'world']被調用。

+0

給你點頭,因爲它回答了這個問題,即使我沒有變得需要它.... – sprugman 2009-11-17 23:02:22

1

哦。我想我應該先測試一下。我使用的道場,而這只是工作:

PHP:

$arr = array('nyc'=>'big apple', 'boss'=>'big banana', 'lion'=>'big cat'); 
$json = htmlentities(json_encode($arr)); 
echo '<input type="hidden" id="myHidden" value="' . $json . '" />'; 

的Javascript:

var raw = dojo.byId('myHidden').value; 
var arr = dojo.fromJson(raw); 
for (var i in arr) { 
    console.log(i + " => " + arr[i]); 
} 

[靦腆地咧嘴一笑]

相關問題