我有一个jquery函数,它遍历一个数组并为每次迭代调用servlet。如何确保每个servlet的响应都转到相应的div部分。 div id是唯一的,对应于数组中的val。
JQuery的:
function foo() {
for (var p in obj) {
var tagId = obj[p]["prop1"];
$.get('CallServlet', {
json: JSON.stringify(obj[p])
}, function(response) {
$("#" + tagId).append(response);
});
}
}
示例:
tagId= obj[0][val1];
我希望我的回复能够:
<div id="tagId"></div>
在上面的函数中,当迭代器在对象中前进时,响应中tagId的值被覆盖。
当我收到obj[0]
的回复时,tagId会更新为obj[1][val1]
答案 0 :(得分:1)
因为您在循环中发送了ajax调用,所以可以在回调中使用循环变量来进行ajax调用。
function(response){
$("#"+tagId).append(response);
}
这将为循环的每次迭代生成一个不同的回调函数。
答案 1 :(得分:1)
你需要用IIFE函数包装它
function foo() {
for (var p in obj) {
var tagId = obj[p]["prop1"];
(function(id) {
$.get('CallServlet', {
json: JSON.stringify(obj[p])
}, function(response) {
printFunc(responseText, id);
});
})(tagId)
}
}