[英]Return object from multiple getJSON responses
我有一個函數調用分頁 API,遍歷每個頁面並從每個響應返回數據:
function nextPage(url) {
if (!url) {
return;
}
$.getJSON(url, function(data) {
nextPage(data.next);
$.each(data.results, function (k, v) {
console.log(v.city_name);
});
});
}
nextPage('http://url.com/api/v1/cities/?page=1');
目前,當我將響應記錄到控制台時,我得到如下所示的內容:
Paris
Brussels
Mexico City
...
但我想要的是一個看起來像這樣的結構:
[
{item: 'Paris'},
{item: 'Brussels'},
{item: 'Mexico City'}
]
作為參考,響應數據如下所示:
{
"count": 105,
"next": "http://url.com/api/v1/cities/?page=2",
"previous": null,
"results": [
{
"city_detail": "http://url.com/api/v1/cities/1/",
"city_name": "Paris"
},
{
"city_detail": "http://url.com/api/v1/cities/2/",
"city_name": "Brussels"
},
{
"city_detail": "http://url.com/api/v1/cities/3/",
"city_name": "Mexico City"
}
]
}
我知道答案正盯着我看,可能很簡單,但我缺乏 javascript 知識讓我失望。 將不勝感激幫助解決這個問題。 謝謝!
編輯
問題似乎是 nextPage 函數進行了多次調用,從 JSON 的每個頁面返回數據。 我可以將這些數據放入多個對象中,但不能用一個對象來表示所有響應。
所以基本上你想將鍵:值對存儲到一個對象..:
var cities = {}
function nextPage(url) {
if (!url) {
return;
}
$.getJSON(url, function(data) {
nextPage(data.next);
$.each(data.results, function (k, v) {
console.log(v.city_name);
cities.name = v.city_name //Push to an object
});
});
}
所以你會得到這個作為回應:
cities = [
{city: 'Paris'},
{city: 'Brussels'},
{city: 'Mexico City'}
]
var cities = {}
function nextPage(url) {
if (!url) {
return;
}
$.getJSON(url, function(data) {
nextPage(data.next);
$.each(data.results, function (k, v) {
console.log(v.city_name);
cities["name"]= v.city_name //Push to an object
});
});
}
:(兩者都一樣)
cities = [
{city: 'Paris'},
{city: 'Brussels'},
{city: 'Mexico City'}
]
好吧,還有另一個問題! 它是偷偷摸摸的,但我們最終抓住了它。 所以問題就在這里:
$.getJSON(url, function(data) {
console.log(data.results)
nextPage(data.next);
$.each(data, function (k, v) {
cities["title"]= v.title //Push to an object
});
});
現在,你看到它說 data.results ... 實際上 data.results 是一個空的未定義變量.. 你應該做的只是包含整個數據的數據。 您現在可能不明白,但請查看我在下面表示的代碼...
var dataJSON;
function nextPage(url) {
if (!url) {
return;
}
$.getJSON(url, function(data) {
console.log(data) //This consits the data on the below provided url...
dataJSON = data; // Just making a public variable assigned to the data..
nextPage(data.next);
$.each(data, function (k, v) {
});
});
}
nextPage('https://cdn.rawgit.com/amanuel2/Collabs/master/list.json')
Plunker
去控制台查看數據....
編輯2
好的,這幾乎是我放在 GITHUB 中的 JSON 文件,所以我有一個安全的 HTTPS://.. Anways 在這里,我只是做了 data.results,我得到了這個結果:
這是Plunker
! 希望這有幫助!!
好的,現在這是最后一點.. 使用你的第二個 JSON 頁面.. 你的第二個 JSON 頁面實際上有語法錯誤.. 所以我修復了那些把它放在 github 中並上傳了新的 JSON .. 這是plunker
..
Link to Read More
關於對象..
var results = []
function nextPage(url) {
if (!url) {
return;
}
$.getJSON(url, function(data) {
nextPage(data.next);
$.each(data.results, function (k, v) {
results.push({item: v.city_name})
console.log(v.city_name);
});
});
}
console.log(results)
// should show an array with {item: city_name} objects.
這也允許在外部范圍內訪問results
數組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.