将PHP关联数组转换为JSON对象 - 值中的空格会导致格式错误的JSON

时间:2015-09-21 13:15:29

标签: javascript php arrays json ajax

我在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正在突破Avalue之间的空间。

我使用json_encode将数组转换为JSON对象以使用Javascript传递:stripslashes(json_encode($array))

然后我将其作为data attribute添加到html元素中,以便我可以使用onclick事件来抓取它。

以下是数据属性中断的地方:[removed excess code for clarity...] "retro-name":"A" value"}

请注意,它在"之后添加了结束A。这打破了JSON对象的其余部分,因此我的AJAX调用失败。

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:4)

我最好的猜测是因为JSON是用双引号括起来的数据属性呈现的,这在HTML中很常见。请使用单引号,而不是双引号。 PHP使用双引号输出JSON。

如果这不起作用,请您使用JSON如何呈现数据属性的示例来更新您的问题。

答案 1 :(得分:0)

如果我要猜测,stripslashes() " A A" value \之后"删除斜线UITableView }。我几乎可以肯定原始数据中UIScrollView前面有一个card_id,您没有逐字显示我们。

答案 2 :(得分:0)

另一种方法:

只需将Dim WshShell, strCurDir, File, strDesktop Set WshShell = CreateObject("WScript.Shell") strDesktop = WshShell.SpecialFolders("AllUsersDesktop") Set ofso = CreateObject("Scripting.FileSystemObject") strPath = ofso.GetParentFolderName(WScript.ScriptFullName) File = "pwsafe.psafe3" strCurDir = ofso.BuildPath(strPath, File) ofso.CopyFile strCurDir , strDesktop , OverwriteExisting 放入卡片div

即可
{{1}}

然后将卡数据传递给JS中的变量

{{1}}

然后你与你的数据和div有关系。