jQuery Ajax调用循环丢失局部变量引用

Jou*_*man 6 javascript ajax jquery

我在循环中进行了几个jQuery ajax调用.每次ajax调用返回时,我都需要引用与原始ajax调用相对应的值.我当前的代码不能正常工作,因为lskey变量的值已经被进一步的循环迭代改变了.

这是代码:

for (var i = 0, len = localStorage.length; i < len; i++) {
        var lskey = localStorage.key(i);
        if (lskey.substr(0, 4) === 'form') {
            var postdata = localStorage.getItem(lskey); // Get the form data
            $.ajax({
                type: "POST",
                async: "false",
                url: "/Profile/PostForm",
                data: postdata,
                success: function (data) {
                    $('#rollinginfo').append('<br>' + data + ',key=' + lskey);
                    localStorage.removeItem(lskey); // Remove the relevant localStorage entry
                }
            , error: function (data) { $('#rollinginfo').append('<br />ERR:' + data); }
            });


        }
    } 
Run Code Online (Sandbox Code Playgroud)

问题是lskey每次循环执行时都会被更改,因此成功回调没有对调用时存在的lskey值的引用.

如何lskey为每个成功回调引用正确的值?

Jac*_*ack 6

for (var i = 0, len = localStorage.length; i < len; i++) {
    var lskey = localStorage.key(i);
    if (lskey.substr(0, 4) === 'form') {
        var postdata = localStorage.getItem(lskey); // Get the form data
        $.ajax({
            type: "POST",
            async: "false",
            url: "/Profile/PostForm",
            data: postdata,
            local_lskey: lskey
            success: function (data) {
                $('#rollinginfo').append('<br>' + data + ',key=' + lskey);
                localStorage.removeItem(this.local_lskey); // Remove the relevant localStorage entry
            }
        , error: function (data) { $('#rollinginfo').append('<br />ERR:' + data); }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

这应该工作.