JavaScript - 无法分配给Loop in Loop

时间:2015-11-10 07:56:17

标签: javascript json ajax variables

我正在尝试使用以下示例将评论存储在Firebase中。该脚本循环遍历json对象并将HTML结果附加到全局变量。但是,循环中的赋值不会附加到全局变量。

var doccmnthtml = '';

try {
    $.getJSON( "https://ocw.firebaseio.com/.json", function( json ) {
        for (var key in json) {
            if (json.hasOwnProperty(key)) {

// Cannot append to the variable
                doccmnthtml += '<b>'+json[key].username+'</b><br/>'+json[key].text+'<br/><br/>';
            }
        }
    });
}
catch(err) {
    console.log(err.message);
}

alert(doccmnthtml);

2 个答案:

答案 0 :(得分:2)

alert在ajax调用之外,因为异步变量未被分配。

请参阅以下代码:我已在alert电话中加入了success

&#13;
&#13;
var doccmnthtml = '';

try {
  $.getJSON("https://ocw.firebaseio.com/.json", function(json) {
    for (var key in json) {
      if (json.hasOwnProperty(key)) {

        // Cannot append to the variable
        doccmnthtml += '<b>' + json[key].username + '</b><br/>' + json[key].text + '<br/><br/>';
      }
    }
    alert(doccmnthtml);
  });

} catch (err) {
  console.log(err.message);
}
&#13;
&#13;
&#13;

答案 1 :(得分:0)

问题是getJSON是一个同步调用,这意味着在设置响应之前调用了警报。

您可以通过在成功响应中调用回调函数来解决此问题。