如何使用带有ajax调用的循环,以便为i获取正确的值?

时间:2015-02-27 03:19:49

标签: javascript jquery ajax

问题是我正在使用ajax调用从html文件中获取一些数据,并在html文件中找到的数据中填充成功按钮列表。这部分工作正常。但是,在填充按钮列表的相同功能中,我试图使其成为每个按钮一旦点击,就会执行另一个ajax到特定于该按钮的URL。由于我有一个数组中的url列表,我使用for循环来填充按钮列表,并在相同的for循环中,我为每个按钮添加一个on click函数。我遇到的问题是,当我点击一个按钮时,它只检索最后一个URL,无论点击了哪个按钮。

继承我的代码:

for(var i = 0; i < tools.length; i++){
    name = tools[i][0];
    url = tools[i][1];

    var id = "";
    for(var j = 0; j < name.length; j++){//remove periods from ids
        if(name.charAt(j) != '.'){
            id += name.charAt(j);
        }
    }

    //populate the list of tools
    $("#tools").append("<li>"
     + "<button class='button button-primary buttons' id='"+id+"' type='button'>"+name+"</button>"
     + "</li>"
     );
    // alert(url);

    $("#"+id).on('click', function(event) {

        $.ajax({
        url: url,
        type: 'GET',
        dataType: 'xml',
        success: processXML
        });

    }); 

};
function processXML(xml){
    var title = $(xml).find('title').first().text();
    alert(title);
}

我研究了一下,发现了这个回复:https://stackoverflow.com/a/2687739/4312572

然而创建一个函数(i)在我的for循环中完成所有操作,然后在for循环中调用函数并没有改变任何东西。它仍然使用了i的最后一个值。

我需要每个按钮进行自己的ajax调用,但按钮本身由前一个ajax调用的success函数填充。

我该如何设置它以达到我所需要的?在此先感谢您的帮助!

0 个答案:

没有答案