Ein Blick auf die Daten,
[
// this is data[0]
{
"page": 1,
"pages": 6,
"per_page": "50",
"total": 264
},
// this is data[1]
[
// this is data[1][0]
{
"indicator": {
"id": "DT.DOD.PVLX.CD",
"value": "Present value of external debt (current US$)"
},
"country": {
"id": "1A",
"value": "Arab World"
},
"value": null,
"decimal": "0",
"date": "2015"
},
// data[1][1 ... 49] below here
... etc
]
]
eine Liste der Länder zu bekommen
var countries = data[1].map(function(item) {
return item.country.value;
});
Natürlich sind Sie nur eine Liste der ersten 50 Länder bekommen In diesem Fall müssten Sie diese API mit einem Parameter aufrufen, um die nächsten 5 Seiten zu erhalten (Sie haben Seite 1 von 6)
so
http://api.worldbank.org/countries/all/indicators/DT.DOD.PVLX.CD?date=2015&format=jsonp&prefix=Getdata&page=2
http://api.worldbank.org/countries/all/indicators/DT.DOD.PVLX.CD?date=2015&format=jsonp&prefix=Getdata&page=3
http://api.worldbank.org/countries/all/indicators/DT.DOD.PVLX.CD?date=2015&format=jsonp&prefix=Getdata&page=4
http://api.worldbank.org/countries/all/indicators/DT.DOD.PVLX.CD?date=2015&format=jsonp&prefix=Getdata&page=5
http://api.worldbank.org/countries/all/indicators/DT.DOD.PVLX.CD?date=2015&format=jsonp&prefix=Getdata&page=6
Need auch
Hier abgerufen werden ist ein Weg, Sie alle rufen
var Getdata = (function() {
var url = 'http://api.worldbank.org/countries/all/indicators/DT.DOD.PVLX.CD?date=2015&format=jsonp&prefix=Getdata';
var allCountries = [];
var callback;
return function Getdata(data) {
var hdr,
arr,
countries;
if (typeof data == 'function') {
// called by code
callback = data; // setup the callback
allCountries = [];
} else {
// called by JSONP type callback
hdr = data[0];
arr = data[1];
countries = arr.map(function(item) {
return item.country.value;
});
allCountries = allCountries.concat(countries);
}
if (!hdr || hdr.page < hdr.pages) {
// get the first (hdr is undefined) or next page
var script = document.createElement('script');
script.src = url + (hdr ? '&page=' + (hdr.page + 1) : '');
document.getElementsByTagName('head')[0].appendChild(script);
} else {
// done, callback the countries
callback(allCountries);
}
};
})();
Länder abrufen können nur
Getdata(function(data) {
console.log(data);
});
in der Callback-Funktion 'var Getdata = Funktion (Daten) {' - Daten ist ein Javascript-Array, nicht etwas, das Sie eine 'JSONP-Datei 'nennen ... nur eine einfache ol' Javascript-Array, die Sie wie jedes andere Javascript manipulieren können Array –
Danke für die Korrektur. Meine Frage ist nun, wie ich es manipuliere. Ich habe die Objekte in der Konsole, aber ich habe versucht, eine Variable zu erstellen: –
Wenn Sie die Daten betrachten, die Sie erhalten, ist es ein Array, und im Array gibt es ein Objekt an der Position 0 - und ein Array von Objekten an der Position 1 ... und keines der Objekte hat eine Eigenschaft mit dem Namen 'name' –