我有一個JSON是getJSON
版PHP腳本,以更新一個簡單的CMS數據庫:爲什麼PHP認爲這個JSON有語法錯誤?
{
"pid": "3",
"post": "<p><span style='text-decoration: underline;'><strong>Test</strong></span></p><br><p>blah</p><br><p> </p><br><p><span style='text-decoration: underline;'><strong>Test</strong></span></p><br><p>blah</p>",
"tagline": "",
"title": "About"
}
在PHP中它被解碼與json_decode
然後被紅牌罰下到數據庫。
它工作的很好,JSONLint報告JSON有效,但是PHP的json_decode
失敗,錯誤4,這是'語法錯誤'。我不確定哪個是正確的(我從我發送的GET
請求複製了上面的JSON,所以在JS方面應該是有效的)。
我使用JSON.stringify
來創建從JS陣列我的陣列的JSON。數組如下:
var arr = {
pid : "<?php echo $pId; ?>",
post : $("#edit_target_preview").html(),
tagline : document.getElementById('page_tagline').value,
title : document.getElementById('page_title').value,
};
該陣列通過getJSON
轉發到PHP腳本:
$.getJSON("savepost.php?json=" + JSON.stringify(arr), function(data){
*stuff happens here*
});
我在做什麼錯在這裏?我是否會反思這一點,或者完全使用錯誤的方法?
進制打印:
7b22706964223a2233222c22706f7374223a223c703e3c7370616e207374 796c653d5c2274657874 2d6465636f726174696f 6e3a20756e6465726c69 6e653b5c223e3c737472 6f6e673e546573743c2f 7374726f6e673e3c2f73 70616e3e3c2f703e3c62 723e3c703e626c61683c 2f703e3c62723e3c703e
使用瀏覽器的控制檯,網絡標籤:請分享「savepost.php」請求的響應/預覽。有時候,空格或php腳本中的錯誤會中斷json字符串。 –
替換你之後JSON字符串變成:''{
「pid」:「3」,
...'這是無效的JSON。 –
有什麼問題,但你確實似乎在過度使用它。顯示行爲。捕獲實際的GET信息並將其硬編碼到一個變量中。然後json_decode它,顯示錯誤。然後發佈在這裏! 9個10說你會找到bug,否則我們可以幫助你調試:) – Nanne