0

我正在建立一个网站,用 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

4 回答 4

3

首先在这个打开的控制台上继续,看看结果。Ctrl+Shift+j。

http://jsfiddle.net/techsin/Q2MHA/

你需要做两件事来修复。'"'

其次就是这段代码

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

你需要 [0] 因为由于某种原因你的 json 对象被包裹在 []..你会知道为什么。

你的 html 应该是这样的

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

于 2013-08-29T13:29:06.167 回答
1

您需要正确处理input. value如果您使用 PHP 填充它,请使用htmlspechalchars()并使用此函数的结果

于 2013-08-29T13:07:34.857 回答
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">
于 2013-08-29T13:08:02.353 回答
0

尝试使用 addlashes 或 htmlspecialchars 转义 "

或者用base64编码字符串并用JS解码,然后再将字符串解析为JSON

于 2013-08-29T13:07:35.600 回答