JSONPジオコーディング・データをgeocoding.geo.census.govからWebサイトに取得しようとすると、JavaScriptが新しくなりました。応答は次のようなものです(クロムから):最初のいくつかのキーが表示されます:ジオコード・サイトからjsonpレスポンスを解析できません
JSONPCallback({"result":{"input":{"address":{"address": "333 e 33th st現在のヴィンテージ - 現在のベンチマーク "}、"ベンチマーク ":{" isDefault ":true、" vintageName ":" Current_Current "、" id ":" 4 "、" vintageDescription " "isDefault":false、 "id": "4"、 "benchmarkName": "Public_AR_Current"、 "benchmarkDescription": "Public Address Ranges - 現在のベンチマーク"}} .............. 。
これは私が使用しているコードです:
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