JSON文件未正确加载[重复]
Posted
技术标签:
【中文标题】JSON文件未正确加载[重复]【英文标题】:JSON file not loading properly [duplicate] 【发布时间】:2015-11-01 04:17:30 【问题描述】:我想阅读this JSON file,但是 xmlhttp 返回的是空的。
这是我正在使用的getJson()
函数。我在本地机器上运行它。
var getJSON = function(dir)
console.log(dir);
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function()
console.log(xmlhttp);
xmlhttp.open("GET", dir, true);
xmlhttp.send();
;
【问题讨论】:
我在这里没有发现问题。您在哪里尝试访问xmlhttp
?它拥有数据的唯一位置是在onreadystatechange
回调中。请参阅XHR get json,数据位于var data = JSON.parse(this.responseText);
行下方。
jsfiddle.net/RamiSarieddine/HE2nY/1
【参考方案1】:
阿尔贝托,
由于您正在异步使用 xmlHttp,并且假设您要将响应保存在变量中,您必须修改您的 getJSON 函数以接受回调函数并将结果和/或错误传递给回调。所以getJSON应该是这样的:
var getJSON = function(dir, callback)
console.log(dir);
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange=function()
if (xmlhttp.readyState==4)
if (xmlhttp.status == 200)
console.log('request finished', xmlhttp);
// pass the response to the callback function
callback(null, xmlhttp.responseText);
else
// pass the error to the callback function
callback(xmlhttp.statusText);
xmlhttp.open("GET", dir, true);
xmlhttp.send();
要使用该功能,您需要这样的东西:
var myReturnedJSON;
getJSON("http://gomashup.com/json.php?fds=geo/usa/zipcode/state/AL&jsoncallback=", function(error, data)
if(error)
//handle the error
else
//no error, parse the data
myReturnedJSON = JSON.parse(data)
);
现在,问题在于源返回无效的 JSON:
(
"result":[
"Longitude" : "-086.466833",
"Zipcode" : "35004",
"ZipClass" : "STANDARD",
"County" : "SAINT CLAIR",
"City" : "MOODY",
"State" : "AL",
"Latitude" : "+33.603543"
]
)
为了使其有效,它应该如下所示:
"result":[
"Longitude" : "-086.466833",
"Zipcode" : "35004",
"ZipClass" : "STANDARD",
"County" : "SAINT CLAIR",
"City" : "MOODY",
"State" : "AL",
"Latitude" : "+33.603543"
]
不同之处在于有效的 JSON 没有括在括号中。
所以,让我们修改回调函数,去掉响应的第一个和最后一个字符:
function(error, data)
if(error)
//handle the error
else
//no error, parse the data
myReturnedJSON = JSON.parse( data.substr(1, data.length - 2) );
希望对您有所帮助! - 奥斯卡
【讨论】:
我认为你应该read this。 谢谢 Oscar,这是我想要的,但我收到错误 Origin 'localhost:8080' 因此不允许访问。但是资源不是来自本地主机,我该怎么办?以上是关于JSON文件未正确加载[重复]的主要内容,如果未能解决你的问题,请参考以下文章