从文件加载Javascript对象

时间:2010-04-05 07:43:37

标签: jquery file object load

我在这个帖子Stackoverflow中提出了一个问题,它完美无缺。所以tnx给所有给我回复的用户。但现在我还有一个问题。

我想将对象放在一个单独的文件中,所以我只需要更新文件而不是JS文件(否则会非常大)。我正在使用JQUERY。

我现在看起来像这样(包含JS文件中的所有信息)。 IBANInfo用于填充选择框

var IBANInfo = {
    "ccAL":{
        countryCode:"AL",
        countryName:"Albanië",
        IBANlength:"28",
        bankFormCode:"0  8n 0 ",
        accountNum:"0  16   0 "
    },
    "ccAD":{
        countryCode:"AD",
        countryName:"Andorra",
        IBANlength:"24",
        bankFormCode:"0  4n 4n",
        accountNum:"0  12   0 "
    },
    "ccBE":{
        countryCode:"BE",
        countryName:"België",
        IBANlength:"16",
        bankFormCode:"0  3n 0 ",
        accountNum:"0   7n  2n"
    }
};
//---- then this function is used to build the selectList
function createSelect(){
    var selectList   =  '';
    var key;
    selectList      +=  "<option value=''>Kies een land</option>\n";
    for (key in IBANInfo) {
        if (IBANInfo.hasOwnProperty(key)) {
            var countryInfo  =  IBANInfo[key];
            selectList      +=  "<option value='"+countryInfo.countryCode+"'>"+countryInfo.countryName+"</option>\n";
        }
    }
    $('#selectBox').html(selectList);
}

我以为我可以这样做,但是我的选择框中的信息未定义。

var IBANInfo = $.get('include/countryCodes.txt');

// also tried var IBANInfo = $.getJSON('include/countryCodes.txt');

//---- then this function is used to build the selectList
function createSelect(){
    var selectList   =  '';
    var key;
    selectList      +=  "<option value=''>Kies een land</option>\n";
    for (key in IBANInfo) {
        if (IBANInfo.hasOwnProperty(key)) {
            var countryInfo  =  IBANInfo[key];
            selectList      +=  "<option value='"+countryInfo.countryCode+"'>"+countryInfo.countryName+"</option>\n";
        }
    }
    $('#selectBox').html(selectList);
}

/*
the countryCodes.txt file is like this:
{
    "ccAL":{
            countryCode:"AL",
            countryName:"Albani&euml;",
            IBANlength:"28",
            bankFormCode:"0  8n 0 ",
            accountNum:"0  16   0 "
        },
        "ccAD":{
            countryCode:"AD",
            countryName:"Andorra",
            IBANlength:"24",
            bankFormCode:"0  4n 4n",
            accountNum:"0  12   0 "
        },
        "ccBE":{
            countryCode:"BE",
            countryName:"Belgi&euml;",
            IBANlength:"16",
            bankFormCode:"0  3n 0 ",
            accountNum:"0   7n  2n"
        }
    }
*/

我做错了什么。 Tnx提前

额外信息: 我已经创建了一个生成IBANnumbers的站点,您可以在iban.wswebcreation.nl上找到它。在此站点上,您可以生成1-100个IBANnumbers。我想要的是一种验证用户想要验证的IBANnumber的方法。他可以通过在输入字段中填写IBANnumber来实现这一点(参见其他网站)。

如果您看到源文件,您将看到var IBANInfo位于JS文件中。我想把它放在一个单独的txt文件中加载。 IBANInfo保存使用IBANnumber的国家/地区的所有信息(数字位数,国家/地区代码,帐号的构建方式等)。 我现在以一些帮助作为对象,看到前一个问题的链接。这有效。但是在将来我还想使用IBANInfo来验证IBANnumber。

希望你现在有足够的信息

1 个答案:

答案 0 :(得分:2)

修改

要提供全局访问权限,您可以执行以下操作:

var IBANInfo = {};
$.getJSON('include/countryCodes.txt', function(json){ IBANInfo = $.extend({}, IBANInfo, data);});

您需要使用$.getJSON代替。 get和post方法也不会返回数据,因为它们需要工作异步,所以你必须运行你的createSelect函数作为回调:

$.getJSON('include/countryCodes.txt', createSelect);

然后你createSelect需要至少拿一个参数作为数据...所以你的定义将是这样的:

function createSelect(IBANInfo){ /* your logic */}