gpt4 book ai didi

javascript - JSON 文件无法正确加载

转载 作者:行者123 更新时间:2023-12-03 09:18:52 24 4
gpt4 key购买 nike

我想阅读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,并且假设您希望将响应保存在变量中,因此您必须修改 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) );
}

}

希望有帮助!- 奥斯卡

关于javascript - JSON 文件无法正确加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31899420/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com