2012-02-06 110 views
0

在我的程序中使用全局ld对象。它的内容可以手动输入,从服务器获取,或从本地存储读取。 writeload()函数使用ld对象,并且当从本地存储中拾取对象时,一切都很好。我曾希望JSON调用会使用全局存储ld,但它显然不会。因此我的问题是:如何将JSON ld对象获取到全局ld对象。我敢肯定,我可以通过在JSON调用中复制它的代码来执行writeload()函数,但它很长,我希望尽可能避免这种情况。欢迎所有建议以及关于更好的结构/做事方式的任何想法。非常感谢。通过JSON调用传递对象

switch (oSource.from) { 
    case 'server': 
     $.getJSON('reports/' + oSource.filename,function(ld) { 
      writeload(); 
     }); 
     break; 
    case 'local': 
     ld=$.jStorage.get(oSource.filename); 
     writeload(); 
     break; 
} 
+1

我希望我能理解这个问题。如果我的评论有其他建议,请澄清。函数中的ld参数是服务器应返回的内容。它不是你想要使用的全局变量。 – akonsu 2012-02-06 08:08:54

+0

@akonsu我希望的是JSON调用会填充全局ld,但它不会。我需要做的是获取ld参数的内容到全局ld的内容。我知道JSON工作正常,因为我可以在JSON调用中成功查看其内容,但是如何将JSON ld的内容复制到全局ld。在JSON调用时,全局ld没有有意义的数据。感谢您看看这个。 – Terry 2012-02-06 08:16:12

回答

0

这个怎么样:

$.getJSON('reports/' + oSource.filename, function(new_ld) { 
    ld = new_ld; 
    writeload(); 
}); 
当你发送一个请求到你的URL( '报道/' + oSource.filename)

,它返回一个对象,和jQuery您正在使用您的来电以此对象作为参数功能。该参数在函数调用中称为new_ld,因此您只需将其分配给您的全局变量。在你原来的文章中,你有一个名为'ld'的函数参数,它有效地隐藏了函数范围中具有相同名称的全局变量。

+0

我的妻子刚刚打电话给我,并坚持我要睡觉(过去的午夜在这里 - 俄勒冈州是美国)。我会在早上第一次尝试。因为我是一个新手,所以我不会不理解它,但是我会一直研究它,直到我做到。谢谢。 – Terry 2012-02-06 08:23:50

+0

工程!非常感谢。我应该想到这一点,但显然没有。 – Terry 2012-02-06 17:25:11

0

据我看到处理函数中的参数隐藏全局变量。 您可以尝试:

switch (oSource.from) { 
    case 'server': 
     $.getJSON('reports/' + oSource.filename, function (response) { 
     ld = response; 
     writeload(); 
     }); 
    ...