Bölümlenmiş bir API'yi çağıran bir işlev var. İlk sayfaya ilk çağrıyı yapar, ardından yanıtta geri gönderilen next
URL'sini kullanarak sonraki sayfalara istekte bulunmaya devam eder. next
null
olana kadar yapar. Yanıtlardan veri (şehir adları) çıkarmaya çalışıyorum ve bunları küresel bir diziye aktarıyorum.Birden çok API isteğinden global diziye geçin
Benim Kod şu anda şöyle görünür:
Sayfa 1
{
"count": 105,
"next": "http://url.com/api/v1/cities/?page=2",
"previous": null,
"results": [
{
"city_name": "Paris"
},
{
"city_name": "Brussels"
}
]
}
Sayfa 2
: Ben şuna benzer JSON iki sayfa var varsayarsakvar results = [];
function nextPage(url) {
if (!url) {
return;
}
$.getJSON(url, function(data) {
nextPage(data.next);
$.each(data.results, function (k, v) {
results.push(v.city_name);
});
});
}
nextPage('http://url.com/api/v1/cities/?page=1');
console.log(results);
{
"count": 105,
"next": null,
"previous": "http://url.com/api/v1/cities/?page=1",
"results": [
{
"city_name": "Manchester"
},
{
"city_name": "Curitiba"
}
]
}
Ben dizi şöyle arayacakları: Ben konsola results
oturum açtığınızda
["Paris", "Brussels", "Manchester", "Curitiba"]
Ancak, dizi boştur. Biri yardım edebilir mi? Daha fazla bilgiye ihtiyacın olursa haberim olsun.
Doğru görünüyor. Console.log() 'ı ikinci bir sonraki çağrıya (nextPage()) göndermeden hemen önce deneyin, belki de cevap beklediğiniz gibi değildir. –
nextPage eşzamansızdır - herhangi bir veriyi almayı ve bunu global sonuç dizisinde saklamayı denemeden önce console.log adresi çağrılır. – thewatcheruatu
Javascript çağrısı bitmeden önce 'results' dizi verilerine erişmeye çalışıyorsunuz. $ .each() 'içindeki console.log() 'unuzu yerleştirmeyi deneyin. Verilerinizin "results" dizisinde doğru bir şekilde girildiğini göreceğinize eminim. –