загрузить объект Javascript из файла - PullRequest
3 голосов
/ 05 апреля 2010

Я задал вопрос в этой теме Stackoverflow , и он отлично работает. Так что всем пользователям, которые дали мне ответ. Но теперь у меня есть другой вопрос.

Я бы хотел, чтобы объект был в отдельном файле, поэтому мне нужно только обновить файл вместо файла 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);
}

Я думал, что смогу сделать это так, но я получаю сообщение undefined в моем окне выбора.

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 номеров IBAN. То, что я хочу сделать, это способ проверки IBANnumber, который пользователь хочет проверить. Он может сделать это, заполнив IBANnumber в поле ввода (см. Другие сайты).

Если вы увидите исходный файл, вы увидите, что var IBANInfo находится в файле JS. Я хочу поместить его в отдельный текстовый файл, который загружается. IBANInfo содержит всю информацию о странах, которые используют IBANnumber (количество цифр, код страны, способ создания номера счета и т. Д.). Я теперь сделал это с некоторой помощью как объект, см. Ссылку на предыдущий вопрос. Это работает. Но в будущем я также хочу использовать IBANInfo для проверки номера IBAN.

Надеюсь, у вас достаточно информации

1 Ответ

2 голосов
/ 05 апреля 2010

EDIT

Чтобы предоставить глобальный доступ, вы можете сделать что-то вроде этого:

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 */}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...