jQuery:如何将值传递给Ajax调用?

时间:2010-06-04 02:40:26

标签: javascript jquery

我正在更新一些div,如下所示:

for(var i = 0; i < data.length; i++) {
    var query = base_url + data[i];
    $.ajax({
        url: query,
        type: 'GET',
        dataType: 'jsonp',
        timeout: 2000,
        error: function() { self.html("Network Error"); },
        success: function(json) {
            $("#li" + i).html("<img src='" + json.result.list[0].url + "' />")
        }
    });
}

i的值在ajax调用中不起作用。我试图传递i的值,以便它可以将元素附加到正确的div。有人可以帮助我吗?

3 个答案:

答案 0 :(得分:1)

确定。这有效但如果有人可以解释它真的很喜欢!我突然想到这个,所以在这里张贴以防万一有人需要它。

for(i = 0; i < data.length; i++)
   fetchItem(i)

fetchItem = function(i) {
    var query = base_url + data[i]; 
    $.ajax({ 
        url: query, 
        type: 'GET', 
        dataType: 'jsonp', 
        timeout: 2000, 
        error: function() { self.html("Network Error"); }, 
        success: function(json) { 
            $("#li" + i).html("<img src='" + json.result.list[0].url + "' />") 
        } 
    }); 
}

答案 1 :(得分:0)

您是否尝试过将i设为全局变量:

变化:

for(var i = 0; i < data.length; i++) { 
    var query = base_url + data[i]; 
    $.ajax({ 
        url: query, 
        type: 'GET', 
        dataType: 'jsonp', 
        timeout: 2000, 
        error: function() { self.html("Network Error"); }, 
        success: function(json) { 
            $("#li" + i).html("<img src='" + json.result.list[0].url + "' />") 
        } 
    }); 
} 

对此:

for(i = 0; i < data.length; i++) { 
    var query = base_url + data[i]; 
    $.ajax({ 
        url: query, 
        type: 'GET', 
        dataType: 'jsonp', 
        timeout: 2000, 
        error: function() { self.html("Network Error"); }, 
        success: function(json) { 
            $("#li" + i).html("<img src='" + json.result.list[0].url + "' />") 
        } 
    }); 
} 

我也同意尼克。您可以先进行循环,然后发送要处理的数组(JSON)服务器端。这样,应用程序的响应速度就会提高。

答案 2 :(得分:0)

我认为你的问题与范围有关。

你应该将for循环中的内容包装成函数

for(var i = 0; i < data.length; i++) {
   doAjax(i);
}

function doAjax(i) {
 var query = base_url + data[i];
    $.ajax({
        url: query,
        type: 'GET',
        dataType: 'jsonp',
        timeout: 2000,
        error: function() { self.html("Network Error"); },
        success: function(json) {
            $("#li" + i).html("<img src='" + json.result.list[0].url + "' />")
        }
    });
}

i的闭包函数的success值仅在不在for循环中时才被正确绑定。

那应该有用。祝你好运。