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

标签 javascript jquery ajax

我在一个循环中进行了多次 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); }
            });


        }
    } 

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

如何为每个成功回调引用正确的 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,
            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); }
        });
    }
}

这应该有效。

关于javascript - jQuery Ajax 循环调用丢失局部变量引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5871107/

相关文章:

javascript - JavaScript 对象只是一个关联数组吗?

javascript - JQuery 选择器标签 SUB 选择器

jquery - 在 JQuery 中添加超链接到文本

jquery - Nodejs Controller 调用 Jquery getJSON 时 Ajax 表单获取错误

JavaScript – 从另一个原型(prototype)函数调用原型(prototype)函数?

javascript - 重新加载具有相同内容的 div

jquery - 如何在 jquery 中动态追加类

ajax - 使用 FormData 上传 blob,文件内容为空

javascript - 有没有办法让浏览器在 ajax 调用后重新加载我的 javascript 代码

javascript - 隐藏列表中的其他元素