我花了最近几天试图解决这个问题。每次我尝试使用Angular的$ http.get获取JSON对象时,我都会收到“Error:JSON.parse:unexpected character”。
我的JSON是使用PHP的json_encode创建的。 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!"}]}
(这是UTF8编码的波兰语,如果它是相关的;文本只是一个占位符)
获得它的JS看起来像这样:
$scope.current_para = $http.get("/gamebook/run");
$scope.current_para.then(function(os){result = os.data; console.log(result);}
我的console.log中没有一个整洁的JSON,我得到了错误,即使我的Firebug告诉我GET方法成功,甚至向我展示了它收到的JSON。
答案 0 :(得分:1)
我终于找到了解决这个问题的方法 - 我仍然不知道发生了什么或为什么发生了,但这里可以做些什么。
在服务器端,您必须将JSON数据包装在单引号中(使其成为字符串),然后在JS中使用eval()将其转换回JSON。
我知道它并不优雅,但这是我找到的唯一解决方案。希望它能帮助别人。
感谢大家的投入!