2016-09-13 4 views
-1

J'ai analysé un fichier CSV à JSON puis ajouté mes propres en-têtes pour d'autres raisons étranges. J'ai donc des données qui ressemble à ceci:Dans la console, je peux utiliser des éléments dans JSON, via console.log ils ne montrent pas

enter image description here

dans mon dossier js que j'ai

console.log (jsonData.theData [0] .symbol);

et je reçois:

admin.js:46 Uncaught TypeError: Cannot read property '0' of undefined 

Il ressemble à 0 me est défini à, mais quand je viens de taper dans le navigateur console la même commande dans le fichier js j'obtenir de bons résultats.

enter image description here J'ai essayé

JSON.stringify (jsonData.theData [0])

avec la même erreur résultant.

Une idée pourquoi cela ne fonctionne pas? fichier

js ci-dessous:

var jsonData = {}; 
var theData = []; 

document.getElementById("fileToRead").addEventListener("change",function() { 
    var input = document.getElementById("fileToRead"); 

     for(var i = 0; i < input.files.length; i++){ 
      var files = input.files[i]; 
      Papa.parse(files, { 
      header:false, 
      dynamictyping:true, 
      complete:function(results){ 
       var input = results.data; 
       input.forEach(function(input){ 
        jsonData.theData = theData; 

        var singleEntry = { 
         "symbol" : input[0], 
         "date"  : input[1], 
         "open"  : input[2], 
         "high"  : input[3], 
         "low"  : input[4], 
         "close"  : input[5], 
         "volume" : input[6] 
         } 

        jsonData.theData.push(singleEntry); 
       }) 
       //console.log (jsonData); 
       // document.getElementById("editor").innerHTML = JSON.stringify(jsonData); 
       } // End Complete - Callback 
      }); // End PapaParse 
    } // End for loop 
console.log(jsonData); 
}); 

modifier .................

J'ai ajouté quelques console.logs à et reçu ce .. ..

enter image description here

+0

Où exactement dans le fichier admin.js appelez-vous la fonction 'console.log()'? Je suppose que vous appelez la fonction au mauvais endroit où cette variable particulière n'est pas définie. – d3r1ck

+0

Je vais modifier avec le code. – illcrx

+0

Est-ce que ce que j'ai dit m'a aidé? Je veux dire que cela a du sens ou vous a aidé? – d3r1ck

Répondre

1

Cliquez sur la petite icône i. C'est une condition de concurrence, votre objet ne se charge pas à temps pour votre console.log(jsonData.theData[0].symbol);. Inspecteur est pour vous charger après le fait

+0

Je vois la petite icône, alors comment puis-je l'afficher après que tout a été chargé et pas avant? – illcrx

0

Lorsque vous appelez votre

console.log (jsonData.theData [0] .symbol);

Etes-vous sûr que votre jsonData est chargé?

Modifier(après le code JS mis à jour)

Dans votre code JS, il n'y a pas console.log(jsonData.theData[0].symbol); ... Nous ne pouvons pas voir et comprendre votre erreur.

Quoi qu'il en soit, comme je l'ai dit, même si votre console.log(jsonData); est faite à la fin de la boucle, il pourrait être vide de toute façon parce que vous chargez vos données de manière asynchrone

source

Depuis le fichier l'analyse est asynchrone, ne pas oublier un rappel.

Ainsi, votre jsonData pourrait être vide (donc, non chargé)