问题是我正在使用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函数填充。
我该如何设置它以达到我所需要的?在此先感谢您的帮助!