function check_timer(){
//get product ids
var product_ids= document.getElementsByClassName("product_id");
//create for loop
for(var i=0; i<product_ids.length; i++){
var product_id= product_ids[i].innerHTML;
$.ajax({
//send product id to check
url: "check_last_timer.php",
type: "post",
data: {product_id: product_id},
success: function(end_time){
//trying to get product_id here
//$("#timer"+product_id).html(end_time);
}
})
}
}
我正在尝试在成功功能中获取我的产品ID。正如你所看到的,我有一个for循环,每次运行时都会将product_id例如1,2,3 ... 10发送到“check_last_timer.php”。问题是如何在成功函数中找回1,2,3 ... 10。每次for循环运行时,我得到最后一个产品ID为10。
答案 0 :(得分:1)
你不能在闭包内使用在闭包之外声明的循环变量。
当您使用jQuery时,请使用.each
:
function check_timer() {
$('.product_id').each(function() {
var product_id = this.innerHTML; // or $(this).html()
$.ajax({
//send product id to check
url: "check_last_timer.php",
type: "post",
data: {product_id: product_id},
success: function(end_time){
$("#timer" + product_id).html(end_time);
}
});
});
}
答案 1 :(得分:0)
这是因为AJAX调用顾名思义是异步的。 for循环继续排队ajax调用,因此你将最后一个id设为10,因为for循环太快而ajax调用需要时间才能完成。
您可以做的是发送product_id进行申请。成功从服务器返回然后进行处理