我不明白解析文件时出了什么问题:
{ "t": -9.30, "p": 728.11, "h": 87.10 }
javascript代码:
<script type="text/javascript">
function check() {
$.get("http://....file.json", function(response, status, xhr) {
if (status == "success") {
var json = JSON.parse(response);
$("#temp").html(json.t + "°");
$("#pressure").html(json.p + " mm hg");
}
if (status == "error") {
$("#temp").html("error");
}
});
}
我收到错误:
SyntaxError: JSON Parse error: Unexpected identifier "object"
答案 0 :(得分:31)
很可能你的response
已经是一个JavaScript对象,不需要解析它。
删除行var json = JSON.parse(response);
,您的代码应该有效。
答案 1 :(得分:7)
根据$.ajax
上的jQuery文档(这是$.get
在内部使用的内容):
dataType: ...如果没有指定,jQuery将尝试根据响应的MIME类型推断它(XML MIME类型将产生XML,在1.4 JSON将产生一个JavaScript对象 ...)
因此,您的回答可能已经是一个对象。当你JSON.parse(response)
时,你真的在做
JSON.parse("[object Object]")
因为JSON.parse
coerces its argument to a string,普通对象默认字符串化为[object Object]
。最初的[
导致JSON.parse
期望一个数组,但它会在object
令牌上窒息,这不符合JSON语法。
删除JSON.parse
行,因为response
已被jQuery解析为对象。