从JSON调用中传递一个对象

时间:2012-02-06 07:57:45

标签: javascript jquery json

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

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

2 个答案:

答案 0 :(得分:0)

怎么样:

$.getJSON('reports/' + oSource.filename, function(new_ld) {
    ld = new_ld;
    writeload();
}); 

当您向URL发送请求('reports /'+ oSource.filename)时,它返回一个对象,您正在使用的jQuery将此对象作为参数调用您的函数。该参数在函数调用中被称为new_ld,因此您只需将其分配给全局变量。在您的原始帖子中,您的函数参数名为'ld',它有效地隐藏了函数范围内具有相同名称的全局变量。

答案 1 :(得分:0)

据我所知,处理函数中的参数隐藏了全局变量。 你可以尝试:

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