【发布时间】:2015-09-21 13:15:28
【问题描述】:
我在 PHP 中构建了一个数组并将其转换为 JSON,然后我使用 onclick 事件进行处理并通过 AJAX 发送到另一个文件。
问题是 php 数组中的某些值中有空格。这似乎破坏了 JSON 对象,这意味着我的 AJAX 调用失败。
这里有一段代码可以尝试并详细说明:
//PHP Array looks like this:
Array
(
[card_id] => 1
[img_id] => 11
[card_name] => Layout1retro_original
[card_qty] => 1
[img_thumb] => albums/160915_E165/thumbs/011_cover-lp-cd_originalDPP_Polaroid.jpg
[img_hires] =>
[img_full] => albums/160915_E165/images/011_cover-lp-cd_originalDPP_Polaroid.jpg
[media] => retro
[finish] => Perl290
[size] => original
[backing] =>
[can_crop] =>
[needs_to_be_cropped] => 1
[been_cropped] =>
[aspect_ratio] => 0
[offer_CMF] =>
[retro-name] => A value
)
问题key => val 对是retro-name。 JSON 在A 和value 之间的空格处中断。
我使用 json_encode 将数组转换为 JSON 对象以通过 Javascript 传递:stripslashes(json_encode($array))。
然后我将它作为data attribute 添加到一个html 元素中,这样我就可以通过onclick 事件来获取它。
这里是数据属性中断的地方:[removed excess code for clarity...] "retro-name":"A" value"}
请注意,它在A 之后添加了一个结束"。这会破坏 JSON 对象的其余部分,因此我的 AJAX 调用失败。
我该如何解决这个问题?
【问题讨论】:
-
你的数据属性是不是用引号引起来的?
-
您可以尝试使用 rawurlencode 自己编码。
-
@JosiahKeller 是的。当任何值中都没有空格时,这是经过测试的。
-
我不明白这个问题。
-
@EliasNicolas 我想我已经很清楚地解释了这个问题。 PHP 数组中键/值对中的空格正在破坏 JSON 对象,如下所示:
"retro-name":"A" value"
标签: javascript php arrays json ajax