我想向谷歌应用引擎提出许多请求。这个基本的for循环方法创建了正确数量的元素,但它们都指向最后请求的blob。
for (key=0; key < keyList.length; key++){
var keyUrl = '/serve_blob/audio/'+keyList[key];
$.ajax({ url : keyUrl, type : 'GET', dataType : 'text',
success : function(data, xhr, status) {
renderTemp("#audioTable", "audioTemplate", {'audioSrc':keyUrl});
}
});
}
我可以通过从ajax完整回调中调用它来获得第二个正常工作的请求。是否有更好的方法可以让它适用于许多请求?
答案 0 :(得分:0)
你不是在“密钥”上迭代吗?你没有使用它......
var keyUrl = '/serve_blob/audio/'+keyList[key];
答案 1 :(得分:0)
这是封闭的本质。当闭包中的代码(例如,成功函数中的代码)执行时,keyUrl
的值是它设置为最后的值 - 在定义闭包时不捕获该值。
为避免这种情况,请将ajax调用放在一个单独的函数中,并以keyUrl
作为参数,并从循环内部调用它。