Javascript 获得;错误:JSON.parse:意外字符;使用AngularJS获取JSON时

Javascript 获得;错误:JSON.parse:意外字符;使用AngularJS获取JSON时,javascript,php,json,angularjs,Javascript,Php,Json,Angularjs,过去几天我一直在努力解决这个问题。每次我尝试使用Angular的$http.get获取JSON对象时,都会得到“Error:JSON.parse:unexpected character” 我的JSON是使用PHP的JSON_编码创建的。PHP代码如下所示: header('Content-Type:application/json'); echo json_encode($to_encode); 它创建的JSON如下所示: {"id":"1","para":{"para_id":"1","s

过去几天我一直在努力解决这个问题。每次我尝试使用Angular的$http.get获取JSON对象时,都会得到“Error:JSON.parse:unexpected character”

我的JSON是使用PHP的JSON_编码创建的。PHP代码如下所示:

header('Content-Type:application/json');
echo json_encode($to_encode);
它创建的JSON如下所示:

{"id":"1","para":{"para_id":"1","story_id":"1","para_content":""\u017bagiel na horyzoncie!" - s\u0142ycha\u0107 krzyk z bocianiego gniazda. Fregata Jego Kr\u00f3lewskiej Mo\u015bci "Acanta" \u017cwawo sunie przez b\u0142\u0119kit oceanu. Ty, jej dow\u00f3dca, stoisz na rufie. Bosman i sternik patrz\u0105 si\u0119 na ciebie, oczekuj\u0105c rozkaz\u00f3w."},"tunnels":[{"tunnel_id":"1","start_para_id":"1","end_para_id":"2","tunnel_content":"Spokojnie, zbli\u017cmy si\u0119 i sprawd\u017amy, kto to."},{"tunnel_id":"2","start_para_id":"1","end_para_id":"3","tunnel_content":"Bi\u0107 na alarm! Za\u0142oga do dzia\u0142!"}]}
$scope.current_para = $http.get("/gamebook/run");
$scope.current_para.then(function(os){result = os.data; console.log(result);}
(如果相关的话,它是UTF8编码的波兰语;文本只是一个占位符)

获得它的JS如下所示:

{"id":"1","para":{"para_id":"1","story_id":"1","para_content":""\u017bagiel na horyzoncie!" - s\u0142ycha\u0107 krzyk z bocianiego gniazda. Fregata Jego Kr\u00f3lewskiej Mo\u015bci "Acanta" \u017cwawo sunie przez b\u0142\u0119kit oceanu. Ty, jej dow\u00f3dca, stoisz na rufie. Bosman i sternik patrz\u0105 si\u0119 na ciebie, oczekuj\u0105c rozkaz\u00f3w."},"tunnels":[{"tunnel_id":"1","start_para_id":"1","end_para_id":"2","tunnel_content":"Spokojnie, zbli\u017cmy si\u0119 i sprawd\u017amy, kto to."},{"tunnel_id":"2","start_para_id":"1","end_para_id":"3","tunnel_content":"Bi\u0107 na alarm! Za\u0142oga do dzia\u0142!"}]}
$scope.current_para = $http.get("/gamebook/run");
$scope.current_para.then(function(os){result = os.data; console.log(result);}

虽然Firebug告诉我get方法成功了,甚至还向我显示了它收到的JSON,但我没有在我的console.log中找到一个整洁的JSON,而是得到了错误。

我终于找到了解决这个问题的方法-我仍然不知道发生了什么或为什么,但下面是可以做的

在服务器端,您必须将JSON数据包装为单引号(使其成为字符串),然后在JS中使用eval()将其转换回JSON

我知道这并不优雅,但这是我找到的唯一解决办法。希望它能帮助别人


谢谢大家的投入

没有波兰语部分它还能用吗?我知道这不能解决你的问题,但如果知道是不是波兰人造成的问题,也许会解决?只是猜测一下。如果它是用UTF-8编码的,那么为什么它会包含转义的Unicode码点呢?不,甚至在删除所有波兰语字符后都不会。这是我检查的第一件事,因为波兰特殊字符是我工作中出现错误的最常见原因。@Tim Withers:恐怕不行-问题不在于向服务器发送JSON,而在于接收数据。:/