在成功函数中获取变量的值

时间:2012-07-03 12:14:52

标签: ajax

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。

2 个答案:

答案 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进行申请。成功从服务器返回然后进行处理