我在下面的代碼中遇到了一些麻煩。控制檯數收益:如何避免從PHP返回的JSON中的反斜槓?
"returningList{"view":0,"new":1,"random":1} result: "{\"view\":0,\"new\":1,\"random\":1}""
正如你可以看到它的收單反斜線,使其不再JSON,儘管指定datatype : 'json'
。
問題似乎發生在從PHP讀回javascript的結果,因爲如果我在寫回$jsonArr
到MySQL之前回顯SQL數據顯示正確的字符串(即沒有反斜槓)。
請幫忙,因爲這種明顯的瘋狂真的讓我興奮起來。我想要做的就是獲取我的數據 - 在我的實際代碼中,我通常不會返回作爲數據傳入的JSON,但這裏只需證明這一點就足夠了。我認爲'json'
數據類型意味着它會接受回聲JSON而不會破壞它。
對於以下直言不諱,但爲了迴應類似的問題,我看到人們只是說「它逃避了引號」,就好像那個回答了這個問題 - 在這種情況下,至少它似乎沒有:顯然(AFAIK)是反斜槓的來源,但引號是JSON語法的一部分(它知道它是期望的),而不是字段內容的一部分,所以它們顯然不應該被轉義。我需要一個解決方案請。謝謝。
window.newGot = listBuild({
'view' : 0,
'new' : 1,
'random' : 1
});
function listBuild(options)
//Fill the new list.
return $.ajax({
type : "POST",
url : "./php/getList.php",
cache : false,
data : {
options : JSON.stringify(options)
},
datatype : "json"
}).then(function(jsonList) {
console.log('returningList' + JSON.stringify(options) + ' result: ' + JSON.stringify(jsonList));
return jsonList;
});
}
這裏的php文件內容:
<?php
$options = json_decode($_POST['options'], true);
$jsonArr = json_encode($options);
echo $jsonArr;
的斜線不會引起任何問題,這是相當正常的,因爲據我所知? – adeneo 2014-09-24 18:10:49
爲什麼您將JSON作爲字符串傳遞給'data',然後在服務器端對其進行解碼,是沒有意義的? – adeneo 2014-09-24 18:12:23
@adeneo - 我也有點困惑,爲什麼你要處理的數據也是這種感覺 - 你不能把它作爲一個對象,並允許AJAX函數來處理轉換? – 2014-09-24 18:14:08