2010-04-05 8 views
3

J'ai posé une question dans ce fil Stackoverflow, et cela fonctionne parfaitement. Donc tnx à tous les utilisateurs qui m'ont donné une réponse. Mais maintenant j'ai une autre question. Je voudrais avoir l'objet dans un fichier séparé, donc j'ai seulement besoin de mettre à jour le fichier à la place du fichier JS (sinon ce sera très grand). J'utilise JQUERY. Je ressemble maintenant à ceci (avec toutes les infos dans le fichier JS). IBANInfo est utilisé pour remplir un selectboxcharger l'objet Javascript du fichier

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); 
} 

Je pensais que je pouvais le faire comme ça, mais je reçois le message non défini dans mon selectbox.

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" 
     } 
    } 
*/ 

Qu'est-ce que je fais mal. Tnx à l'avance

Extra info: Je l'ai déjà fait un site pour générer IBANnumbers, vous pouvez le trouver sur iban.wswebcreation.nl. Sur ce site, vous pouvez générer 1-100 IBANnumbers. Ce que je veux faire est un moyen de valider un IBANnombre qu'un utilisateur veut valider. Il peut le faire en renseignant le numéro IBAN dans un champ d'entrée (voir les autres sites).

Si vous voyez le fichier source, vous verrez que var IBANInfo est dans le fichier JS. Je veux le mettre dans un fichier txt séparé qui est chargé. IBANInfo contient toutes les informations des pays qui utilisent IBANnumber (le nombre de chiffres, le code du pays, la façon dont le numéro de compte est créé, etc.). Je l'ai maintenant fait avec de l'aide en tant qu'objet, voir le lien vers la question précédente. Cela marche. Mais à l'avenir, je veux aussi utiliser IBANInfo pour valider le numéro IBAN.

Espoir vous avez maintenant assez d'informations

+0

Si vous acceptez certaines des réponses à vos autres questions, les gens seront plus enclins à vous aider. –

+0

Comment accepter les réponses? Ai-je besoin de répondre à la question que je l'ai fait fonctionner? – Megapool020

+0

Cliquez sur la coche sous le nombre de votes pour la réponse. – prodigitalson

Répondre

2

EDIT:

Pour donner un accès global, vous pouvez faire quelque chose comme ceci:

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

Vous devez utiliser $.getJSON à la place. De plus, les méthodes get et post DonT retourner les données, car ils ont besoin pour travailler async, de sorte que vous Actuall devez exécuter votre fonction createSelect comme rappel:

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

Ensuite, vous createSelect doit prendre au moins un argument qui sera les données ... Donc, votre définition ressemblera à:

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

Ok, tnx. Je vais essayer ça plus tard ce jour (besoin d'avoir le petit déjeuner de Pâques maintenant), mais 1 question. Je ne vous ai pas donné toutes les informations, désolé. L'IBANInfo doit être accessible plusieurs fois par plusieurs fonctions. Si je l'utilise, corrigez-moi si je me trompe, je suis toujours une recrue, elle sera combinée avec la fonction createSelect. Comment puis-je y accéder plus tard? Tnx à l'avance – Megapool020

+0

Eh bien, vous voudrez peut-être repenser cela ... si plusieurs fonctions doivent l'utiliser, comment saurez-vous quand l'objet est réellement disponible (en supposant que vous ne définissez pas async sur false)? Si vous définissez async à false alors quel est le point d'utiliser une demande séparée pour obtenir l'info? – prodigitalson

+0

Salut prodigitalson, j'ai ajouté des infos supplémentaires pour vous expliquer ce que je veux faire. J'ai également essayé votre solution, mais cela n'a pas fonctionné. Je mets une alerte à l'endroit que tu as dit/* ta logique * /, mais ça ne s'est pas montré. Cela ressemble à ceci ou le fichier n'est pas trouvé, ou la fonction n'est pas exécutée parce que quelque chose d'autre est faux. Firebug ne donne pas d'erreur. Y at-il peut-être une autre solution pour "charger" le contenu d'un fichier qui peut être mis dans un objet? – Megapool020

Questions connexes