把JSON数据输入到html表单中隐藏?

iqih9akk  于 2023-08-08  发布在  其他
关注(0)|答案(6)|浏览(162)

我正在构建一个使用大量数据的富Web应用程序。当我建造它的时候,我发现我在一遍又一遍地重复自己。
这就是问题所在。我需要将隐藏的应用程序逻辑放入HTML元素中,以表示客户端正在查看的数据。
这是我在不久前找到的一个解决方案:

<a href="bla" data-itemId="1" .... more data.

字符串
这种方法存在两个问题。
1.我不能表示数组。
1.太难看了
我寻找一个解决方案,但没有找到任何东西。我也上了Facebook,打开Firebug,发现了这个:

{"actor":"19034719952","target_fbid":"454811929952","target_profile_id":"19034719952","type_id":"7","source":"1","assoc_obj_id":"","source_app_id":"","extra_story_params":[],"content_timestamp":"1324385453","check_hash":"9eabc3553e8a2fb6"}


这个json位于input[type=hidden]元素中。
我试着用json_encode();做同样的事情

<input type="hidden" name="track" value="{"_id":{"$id":"4eee908f615c2102e9010000"},"link":"george-wassouf-flag-of-my-heart-longing","file":"\/m\/tracks\/t.4eee908daca2a3.49941874.mp3","lyrics":null,"freezed":false,"hits":0,"images":{"large":"\/assets\/static\/default.track.large.jpg","thumb":"\/assets\/static\/default.track.thumb.jpg","icon":"\/assets\/static\/default.track.icon.jpg"},"duration":"300","created":{"sec":1324257423,"usec":78000},"albums":[{"_id":{"$id":"4eee8d63615c21f6e7000000"},"names":{"ar":"\u0643\u0644\u0627\u0645\u0643 \u064a\u0627 \u062d\u0628\u064a\u0628\u064a","en":"Kalamak ya Habibi"},"link":"george-wassouf-kalamak-ya-habibi","images":{"original":"\/m\/pics\/albums\/o.4eee8d612c3183.11879972.jpg","poster":"\/m\/pics\/albums\/p.4eee8d63967072.02645896.jpg","large":"\/m\/pics\/albums\/l.4eee8d63a89111.20372767.jpg","small":"\/m\/pics\/albums\/s.4eee8d63b18927.47242533.jpg","thumb":"\/m\/pics\/albums\/t.4eee8d63b7f1f4.11879932.jpg","icon":"\/m\/pics\/albums\/i.4eee8d63bf1304.59902753.jpg"}},{"_id":{"$id":"4eee8d63615c21f6e7000000"},"name":"Kalamak ya Habibi","link":"george-wassouf-kalamak-ya-habibi"}],"name":"Flag of my heart longing","title":"Flag of my heart longing","mp3":"\/m\/tracks\/t.4eee908daca2a3.49941874.mp3","poster":"\/m\/pics\/artists\/p.4eee85cd7ed579.65275366.jpg","artists":[{"_id":{"$id":"4eee85cd615c21ece6000000"},"name":"George Wassouf","link":"george-wassouf"}]}" />


但是当我试图得到这个值时,我得到了这个{
我已经尝试了所有像JSON_HEX_TAG这样的常量,没有发现任何这种类型的问题。
如何将JSON正确地放入HTML中,然后使用jquery/JavaScript获取它?

dddzy1tm

dddzy1tm1#

您的字符串是正确的,但无法在HTML中定义,因为它包含双引号。
HTML要求您在定义本身用双引号括起来的String时转义双引号。正确的方法是使用HTML实体:
第一个月

来自PHP:

使用htmlspecialcharshtmlentitieshttp://www.php.net/manual/en/function.htmlspecialchars.php)。在任何情况下,您通常都应该在向客户端浏览器写入的每个值上使用此值(不这样做可能会导致安全风险)。

来自JavaScript:

如果需要从JavaScript中执行此操作,则可以通过编程设置隐藏元素的值(前提是JSON字符串已经包含在Javascript变量中)。这样你就不必担心字符串字面量的编码了:
hiddenElement.value = yourString;
为了获得一个你可以使用的转义函数,也许检查这个线程:Escaping HTML strings with jQuery的。

vs3odd8k

vs3odd8k2#

最好的方法是使用html"
例如,我这样做:

<input type="hidden" id="v" value="[{&quot;id&quot;:&quot;1&quot;}]" >

字符串
代替了

<input type="hidden" id="v" value="[{"id":"1"}]" >

7kjnsjlb

7kjnsjlb3#

在输入标记中,您尝试将json数组放入的value属性。你看你输入了"。第二个"结束属性值。因此它被解释为value = "{"。你需要摆脱那些"。改为使用单引号'。然后检查一下

pgx2nnw8

pgx2nnw84#

我的回答似乎晚了,但我想为后来来的人做点贡献。在来到这里之前,你有HTML的概念。使用单引号',不应该这样做,虽然它仍然工作,这是违反HTML原则。最好的办法是:使用htmlspecialchars或htmlentities。@jjmont上面说。
我举一个小例子:

<input id="jsondata" value="<?php echo htmlspecialchars( json_encode($data), ENT_COMPAT ); ?>" >

字符串
||

<input id="jsondata" value="<?php echo htmlspecialchars( json_encode($data), ENT_NOQUOTES ); ?>" >

3htmauhk

3htmauhk5#

你可以只使用单引号来表示你的html value属性:
value='json'

holgip5t

holgip5t6#

php set array in

<input type="checkbox" name="deviceInfo" value="<?php print_r(json_encode(array_filter($array_data), JSON_FORCE_OBJECT));?>" />
?>

字符串

相关问题