如何向谷歌应用引擎发出许多 ajax 请求 blob



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

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

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

你不是在迭代"键"吗? 你没有使用它...

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

最新更新