ajax success后闭包里面的id变量一直数组最后一个元素,怎么回事?

这是自己封装的一个函数!

function AjaxDeleteTo($formGetValue,$url,CallbackSuccess,$validatorFunc) {
    $.ajax({
        type:"DELETE",
        url:$url,
        timeout:6000,
        data:$formGetValue,
        success:CallbackSuccess,
        beforeSend:$validatorFunc
    })
}

这是一个for循环,ajax success后闭包里面的id变量一直数组最后一个元素,怎么回事?

 for (var i = 0;i<idArray.length;i++){
                        var id = idArray[i];
                        AjaxDeleteTo({id: id}, "{{url('admin/news')}}", function ($obj) {
                            if ($obj.result_code == 1) {
                                layer.msg($obj.result_info, {icon: 1});
                                $('input[value='+id+']').parents("tr").remove()
                                console.log(id)
                            } else {
                                layer.msg($obj.result_info, {icon: 2});
                            }
                        }, function () {

                        })
                    }
阅读 2.6k
3 个回答

因为调用callback的时候循环完了啊。。id就是最后一个。。

你如果想要打印出不同的id应该在闭包的时候传入id、你的callback取到的是循环完了的id

func($obj){}写成(func($obj){})(id)就好了。。。

推荐问题