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

pokerface
  • 628

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

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 () {

                        })
                    }
回复
阅读 1.5k
3 个回答

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

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏