[英]Converting PHP Associative array to JSON object - spaces in value results in malformed JSON
我在 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 調用失敗。
我怎樣才能解決這個問題?
我最好的猜測是因為 JSON 是在用雙引號括起來的數據屬性中呈現的,這在 HTML 中很常見。 而不是雙引號,請嘗試單引號。 PHP 輸出帶雙引號的 JSON。
如果這不起作用,請您舉例說明如何使用 JSON 呈現數據屬性來更新您的問題。
如果我要猜測,它是stripslashes()
刪除(假定)轉義的"
A
in A" value
之后的斜線。 我幾乎可以肯定,原始數據中的"
前面有一個\\
,您沒有逐字向我們展示。
一種不同的方法:
只需將card_id
放在卡片 div 中
<div class="print-wrap has-size" data-card_id="<?=$array['card_id'];?>">
然后將卡片數據傳遞給JS中的一個變量
<script>var card_data['<?=$array["card_id"]?>'] = <?=json_encode($array);?>;</script>
然后你有你的數據和 div 的關系。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.