获取存储在隐藏输入元素中的JSON数据?

时间:2013-08-29 13:05:31

标签: php javascript jquery html json

我正在构建一个网站,使用php

将json数据存储到隐藏的输入元素
<input type='hidden' class='json_data' name='json_data' value='".json_encode($data[0])."'>

使用该代码,我得到了这个结果:

<input class="json_data" type="hidden" value="[{"ALBUM_ID":"1234","PHOTOS_ID":"1234578"}]" name="json_data">

但是当我尝试使用jquery.val获取值并尝试显示ALBUM_ID时,我得到了这个{

我将json正确放入html的方式有什么问题吗?

然后使用jquery / javascript获取它?

谢谢

4 个答案:

答案 0 :(得分:3)

首先在这个打开的控制台上查看结果。 CTL + SHIFT + J

<强> http://jsfiddle.net/techsin/Q2MHA/

你需要做两件事。 '"'

其次只是这段代码

JSON.parse($('.json_data').val())[0]

你需要[0]因为某些原因你的json对象被包裹在[]中你会知道原因。

你的HTML应该是这样的

<input ... value='[{"ALBUM_ID":"1234","PHOTOS_ID":"1234578"}]'...>

答案 1 :(得分:1)

您需要正确处理input的{​​{1}}中的实体。如果使用PHP填充它,请使用value并使用此函数的结果

答案 2 :(得分:1)

仔细检查以下一行。

<input class="json_data" type="hidden" value="[{"ALBUM_ID":"1234","PHOTOS_ID":"1234578"}]" name="json_data">

如您所见,您已使用"进行字符串封装。 json字符串还包括",它会破坏你的字符串封闭。使用'括起字符串。

<input class="json_data" type="hidden" value='[{"ALBUM_ID":"1234","PHOTOS_ID":"1234578"}]' name="json_data">

答案 3 :(得分:0)

尝试逃避“使用addslashes或htmlspecialchars

或使用base64对字符串进行编码,并在将字符串解析为JSON

之前使用JS对其进行解码