无法从地理编码站点解析jsonp响应

时间:2017-02-28 18:13:55

标签: javascript jsonp

我是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]

我不明白为什么我得到的只是"结果"?

2 个答案:

答案 0 :(得分:0)

evalJSONP: function(callback) {
    return callback;            
}

那应该有用。如果您的样本是准确的。然后,您不需要解析数据。

答案 1 :(得分:0)

我相信旧代码没有工作,因为它试图解析一个对象。如果我错了,请纠正我。