2011-11-17 68 views
0
var s = store.get('billablexxxx'); 
if (!s) { 
    if (false) { 
      s = { 
      "something" : 'Value', .... 
      } 
    } 
}else { 
     s = new Object; 
     $.getJSON('Translation/GetIndexLabels', function(data) { 
      $.each(data, function(key, val) { 
      s[key] = val; 
      // temp[key] = val; 
      })}) ; 
    } 
} 
//here i use the variable 

但其中i使用该变量,动态特性dissapaered,它不是未定义但它是一个空对象。 但是,当它在$ .getJSON()函数中设置时,将添加所有值。JavaScript的动态属性自败 - 变空物体(未未定义)

我做错了什么?

编辑: 通过将它放入一个函数来解决问题。当我发布这个问题时,我已经接近我找到最后一个“小时”(怪异的javascript控制台结果带来混淆)的答案。

感谢您的建议!

回答

1

$.getJSON()的调用是异步的,因此在异步调用完成之前,执行将到达“使用变量”的部分。

处理此问题的常用方法是使用getJSON()调用中引用的回调函数中的变量。

以下是参考:http://api.jquery.com/jQuery.getJSON/

1

getJSON方法是异步的,一旦它完成,它会调用你的函数(数据)。 在您使用s的地方,getJSON方法尚未返回,因此s的属性尚未初始化。