Hei*_*ann 16 javascript ajax jquery
我需要使用AJAX获取一系列页面并将它们放入一个数组中,其中数组中给定的位置等于ifor循环(它是博客页面的类似缓存的函数,以及for循环的范围)是完全可变的).我正在做类似以下的事情:
var bongo = new Array();
for (i = 0; i < 10; i++) {
jQuery.ajax({ type: "GET", url: 'http://localhost', data: queryString, success: function(request) { bongo[i] = request } })
}
Run Code Online (Sandbox Code Playgroud)
问题是,除非我添加async: false.ajax选项(这将使它... SJAX?),这导致请求基本上暂停浏览器,违背我正在尝试做的事情,我在成功回调总是最终为11,而我当然希望它将返回的数据倒入数组的每个插槽中,从0到10.
我试过用这个代替这行:
bongo[i] = jQuery.ajax({ type: "GET", url: 'http://localhost', data: queryString }).responseText
Run Code Online (Sandbox Code Playgroud)
但这没有任何区别.
Ply*_*ynx 39
你需要一个闭包:
var bongo = [];
for (i = 0; i < 10; i++)
{
(function(i)
{
jQuery.ajax(
{
type: "GET",
url: "http://localhost",
data: queryString,
success: function(request) { bongo[i] = request }
});
})(i);
}
Run Code Online (Sandbox Code Playgroud)
循环是内联函数残留人的第一名.该bongo[i] = result不叫,直到后来.当时的价值i是不同的(很可能是11).如果要"捕获"或"捕获" 当前值i,则需要创建新范围.在javascript中执行此操作的唯一方法是使用另一个函数.
| 归档时间: |
|
| 查看次数: |
11831 次 |
| 最近记录: |