在使用AngularJS获取JSON时获取“错误:JSON.parse:意外字符”

时间:2013-12-23 17:27:27

标签: javascript php json angularjs

我花了最近几天试图解决这个问题。每次我尝试使用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。

1 个答案:

答案 0 :(得分:1)

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

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

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

感谢大家的投入!