JavaScript代碼:
$.ajax({
type: "POST",
url: "postTestingResult.php",
data: {data: JSON.stringify(sendData)},
dataType: "json",
success: ajaxSuccess,
error: ajaxError
});
PHP代碼
$data = json_decode($_POST['data'], TRUE);
當我發佈一個複雜的數據結構到服務器,最外面的陣列正在成爲一個字符串。例如,JavaScript對象可能是
var data = {"apps": [[1,2,3], [4,5,6]]}
透過JSON.stringify(數據)這成爲
"{"apps": "[[1,2,3], [4,5,6]]"}" //As seen via console.log(data) in Chrome console
但這樣做的json_decode後($ _ POST [ '數據'],TRUE)成爲
array('apps' => '[[1,2,3], [4,5,6]]') //As seen via var_export($data, TRUE)
這是怎麼回事?爲什麼數組被轉換爲字符串?查看完整的JSON對象和完整的PHP對象check out this pastebin with the two。
任何幫助非常感謝,謝謝。
更新:回覆發現 我發現了主要的罪魁禍首。我也在使用Prototype.js,並且在對象原型中添加了toJSON方法。 Check out this SO question for details。
看起來像'JSON.stringify()'的問題,因爲這是嵌套數組變成字符串的時候。儘管如此,仍在思考可能發生的事情。 – Sam
那麼,'sendData'是一個對象字面值?你有沒有嘗試發送它沒有'JSON.stringify()'。我不認爲你需要JSONify'POST'ed對象文字數據。 –
@Darragh sendData是一個複雜的數據對象。你可以在我鏈接的pastebin中看到它的JSON.stringify版本。你可以想象它(顯然沒有鍵/數據):{[{[{[]},{[]}],{[{[]},{[]}]}],{}} –