2017-10-10 140 views
-2

這個問題似乎是簡單的: 一個AJAX POST請求的回調函數接收參數「數據」這JSON字符串:JSON.parse(數據)導致錯誤

{"result":"Torte"}. 

當我喜歡手動解析它這

var antwort = JSON.parse('{"result":"Torte"}'); 

沒關係。 但

var antwort = JSON.parse("'" + data + "'"); 

導致錯誤

Uncaught SyntaxError: Unexpected token ' in JSON at position 0 
at JSON.parse (<anonymous>) 

隨着

var antwort = JSON.parse(data); 

類似的錯誤顯示出來(在Chrome的開發者工具):

VM1285:2 Uncaught SyntaxError: Unexpected token < in JSON at position 21 
at JSON.parse (<anonymous>) 

所以似乎是'da ta'包含附加字符。 在另一方面,使接收到的JSON字符串可見與

$("#idTest").html(data) 

只是表明

{"result":"Torte"} 

沒有其他字符。

我一直在解決這個問題幾個小時 - 沒有成功。 請問任何人都可以幫忙。

+0

'{「結果」:「事侵權」}'你的問題(beggining) - 期間有一個在問題中輸入錯誤,或者嘗試解析時遇到錯誤? –

+1

嘗試JSON.parse(JSON.stringify(數據))....此外,JSON格式不允許您以' –

+0

開頭如果您使用'$ .html'它可以很好地更新DOM並且不顯示html包裝JSON響應的字符串。 – MinusFour

回答

2

JSON.parse中的數據必須是具有有效JSON的字符串。這不是一個錯誤,它是一個例外,警告解析器發現一個無效的標記。

此外:您的JSON不能以<'開頭。

0

謝謝大家的支持! 問題是我在PHP文件中有一個HTML頭。

JSON.parse(JSON.stringify(data));不需要。

下面兩行的PHP文件的末尾做的工作:

$antwort['result'] = "Torte"; 
echo json_encode($antwort);