簡體   English   中英

有沒有javascript相當於php的urldecode或html_entity_decode()?

[英]Is there a javascript equivalent of php's urldecode or html_entity_decode()?

我在php中有一個關聯數組,我想要隱藏在一個隱藏的表單輸入中,這樣我以后可以在javascript中獲取值。 由於引用問題,我需要urlencode json,或htmlentity它。 但是,一旦我在javascript中擁有了這個對象,那么將它恢復到普通ol'json的最簡單方法是什么?

或者有更好的方法來解決這個問題嗎? AJAX在這里似乎有些過分 - 我寧願預先填充頁面上的數據,而不是設置多個請求。 我想我可以將php對象寫入php生成的腳本標記內的頁面,但這看起來有點亂,我不確定[腳本]是否會在可能使用它的每種可能情況下進行解析。

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

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

另一種方法可能是將JSON對象嵌入PHP輸出中的<script>元素中。 您甚至可以將JSON對象作為將其存儲在某處的函數的參數。

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

當頁面加載時,將使用文字['hello', 'world']調用setupData

哦。 我想我應該先測試一下。 我正在使用dojo,這就是Just Works:

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]);
}

[羞怯]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM