我完全不了解JavaScript,试图从geocoding.geo.census.gov获取JSONP地理编码数据到网站中。答案看起来像这样(从铬),只显示前几个键:无法解析来自地理编码网站的jsonp响应
JSONPCallback({“result”:{“input”:{“address”:{“address”:“333 e 33th st “vintage”:{“isDefault”:true,“vintageName”:“Current_Current”,“id”:“4”,“vintageDescription”:“当前年份 - 当前基准”}, “isDefault”:false,“id”:“4”,“benchmarkName”:“Public_AR_Current”,“benchmarkDescription”:“公共地址范围 - 当前基准”}} .............. 。
这是我使用的代码:
var jsonp = {
callbackCounter: 0,
fetch: function(url, callback) {
var fn = 'JSONPCallback_' + this.callbackCounter++;
window[fn] = this.evalJSONP(callback);
url = url.replace('=JSONPCallback', '=' + fn);
var scriptTag = document.createElement('SCRIPT');
scriptTag.src = url;
document.getElementsByTagName('HEAD')[0].appendChild(scriptTag);
},
evalJSONP: function(callback) {
return function(data) {
var validJSON = false;
if (typeof data == "string") {
try {validJSON = JSON.parse(data);} catch (e) {
/*invalid JSON*/}
} else {
validJSON = JSON.parse(JSON.stringify(data));
window.console && console.warn('response data was not a JSON string');
}
if (validJSON) {
callback(validJSON);
} else {
throw("JSONP call returned invalid or empty JSON");
}
}
}
}
然后:
{console.log(Object.keys(data));} //(or data[0])
和所有我得到在控制台是:
响应数据不是JSON字符串
阵列[1] 0: “结果” 长度: 1 proto:Array [0]
我不明白为什么我所得到的只是“结果”?
您不需要使用JSON.parse解析数据。 – Joe