【发布时间】:2016-07-14 05:28:50
【问题描述】:
我还是 javascript 的新手,所以我可能会以错误的方式处理这个问题。如果您能建议我这样做的更好方法,我将不胜感激;总是喜欢学习一种新的、更好的方法!
这里是:
我使用数组 iD 来生成要从中提取数据的 10 个 JSON 表的 URL。
var set = $('.set');
var iD = [
"od6",
"o9mpc0w",
"ol96q2e",
"olqcdyz",
"ojfsm09",
"oijguh3",
"obmuic4",
"oup920g",
"ohwlz67",
"omk1ruv"
];
function photoSet(){
var idLength = iD.length;
for (var i = 0; i < idLength; i++) {
遍历数组后,我会使用 ajax 调用来查询每个数组。
$.ajax({
url:'https://spreadsheets.google.com/feeds/cells/1TBjwQNVRMNzuyZRxr9yX-fUKWw6gpUX69o9PQc79COs/' + iD[i] + '/public/values?alt=json',
async: true,
dataType: 'jsonp',
success: photos});
查询完成后,我从每个 JSON 表的单元格中检索数据,并将其用作图像 src 以插入到文档中。
function photos(results){
for(var a = 1; a <= 1; a++) {
var imageEntry = results.feed.entry[a].content.$t;
set.append('<li class="image"><img src="'+ imageEntry +'"/></li>');
console.log(imageEntry);
}
}
}
}
photoSet();
问题是这样的:我需要使生成的图像与数组iD
的顺序相同每次页面加载时,图像都会以不同的顺序显示。我知道这样做是因为查询进入的时间略有不同,因此导致每个页面加载的顺序不同。
它是否与将 ajax 调用存储在变量中,然后一次抓取一个有关?我需要另一个回调吗?随着嵌套变得越来越复杂,我越来越困惑:/
我一直在寻找如何做到这一点,但似乎无法弄清楚。似乎每有一个新发现,就会出现一个新问题。我想这就是代码的本质。谢谢大家的帮助:)
另外,I saw this question,但我无法弄清楚如何将其答案应用于我的代码。如果我这样做了,我会立即删除这个问题。
【问题讨论】:
-
您是否愿意同时让 img src'es 恢复正常?而不是在他们进来时显示他们
-
我愿意!作为旁注,当我将 async 更改为 false 并将 dataType 更改为 json 时,它们以正确的顺序出现。那可靠吗?我实际上不明白为什么会这样。我修改了 codepen 以反映这种变化。
标签: javascript jquery arrays json ajax