我是JavaScript的新手,试图将geocoding.geo.census.gov中的JSONP地理编码数据导入网站。响应看起来像那样(来自chrome),只显示前几个键:
JSONPCallback({"导致" {"输入" {"地址" {"地址":" 333 e 33th st austin tx"}," vintage":{" isDefault":true," vintageName":" Current_Current",& #34; id":" 4"," vintageDescription":"当前年份 - 当前基准"},"基准":{ " ISDEFAULT":假," ID":" 4"" benchmarkName":" Public_AR_Current"&#34 ; benchmarkDescription":" Public Address Ranges - Current Benchmark"}} ...............
这是我使用的代码:
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 :数组[0]
我不明白为什么我得到的只是"结果"?
答案 0 :(得分:0)
evalJSONP: function(callback) {
return callback;
}
那应该有用。如果您的样本是准确的。然后,您不需要解析数据。
答案 1 :(得分:0)
我相信旧代码没有工作,因为它试图解析一个对象。如果我错了,请纠正我。