Javascript var 提前发布

标签 javascript json for-loop

我有一个已经使用过多次的函数,但在这一次修改中,我似乎遗漏了一些东西。我有一个 var listHTML ,我用它作为附加 HTML 的基础,这样我就可以在 for 循环完成后更新 div 的 HTML,但无论出于何种原因,在for 循环完成。我认为在循环运行之前在循环外部创建对 var 的引用足以将其保留在内存中直到函数结束......我猜不是。

代码:

var listHTML = '';

    for(var j = 0; j < arr.length; j++)
    {
        var product = arr[j].split(",");
        var key = product[1];

        $.ajax({
            url:"http://domain.com/dir/get.php?key="+encodeURIComponent(key),
            dataType: 'jsonp', 
            success:function(json){

                var i = 0;

                while(json[i])
                {
                    listHTML += '<div class="row">';
                    listHTML += '<div class="image"><img src="'+json[i]["image"]+'"/></div>';
                    listHTML += '<div class="title">'+json[i]["title"]+'</div>';
                    listHTML += '<div class="quantity"><input type="number" id="'+key+'" value="'+product[0]+'"/></div>';
                    listHTML += '<div class="actions"><img src="/_newsite/images/icons/trash.png" onclick="removeFromCart('+"'"+key+"'"+')" title="Remove From Cart/><img src="/_newsite/images/icons/update.png" onclick="updateCart('+"'"+key+"'"+')" title="Update Quantity"/></div>';
                    listHTML += '</div>';

                    i++;
                }

                console.log(listHTML);

            },
            error:function(){
                alert("Error");
            },
        });

    }

    console.log(listHTML);

当 console.log 在 for 循环内部运行时,它返回我期望的正确值,但 for 循环外部函数末尾的值返回 null。

最佳答案

在函数完成后的某个时间,您的 ajax 成功回调将被调用。 Ajax 中的“A”代表异步。

因此,当您的函数完成时,listHTML 尚未被触及。您需要修改成功回调函数内的 listHTML 并在那里使用它,或者将其作为您从成功回调中调用的参数传递给另一个函数。您无法按照您尝试的方式在成功处理程序之外使用它。

关于Javascript var 提前发布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16269461/

相关文章:

php - 无法从 sublime text 2 中删除 eslint

javascript - 在 javascript 中生成和下载文本文件

java - 从 URL 解析 JSON 数据时出现问题

javascript - 如何在 JavaScript 中使用 reduce 而不是 for 循环构建 contains 函数?

javascript - 为什么这个 for 循环不起作用?

javascript - Relay 中的嵌套片段数据始终相同

javascript - AngularJS 本地存储

javascript - 将 $.getJSON 对象传递给另一个 ember Controller

java - 如何解析对单个 JAVA 对象的 JSON 响应

c# - 使用循环在 C# 中创建数字及其平方的列表