如何为谷歌应用引擎制作许多针对blob的ajax请求

时间:2012-04-19 06:25:17

标签: javascript google-app-engine jquery

我想向谷歌应用引擎提出许多请求。这个基本的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完整回调中调用它来获得第二个正常工作的请求。是否有更好的方法可以让它适用于许多请求?

2 个答案:

答案 0 :(得分:0)

你不是在“密钥”上迭代吗?你没有使用它......

var keyUrl = '/serve_blob/audio/'+keyList[key];

答案 1 :(得分:0)

这是封闭的本质。当闭包中的代码(例如,成功函数中的代码)执行时,keyUrl的值是它设置为最后的值 - 在定义闭包时不捕获该值。

为避免这种情况,请将ajax调用放在一个单独的函数中,并以keyUrl作为参数,并从循环内部调用它。