2012-10-15 12 views
0

J'ai un script php qui charge fondamentalement juste un csv via:Javascript split() ne fonctionne pas

écho json_encode (fichier (csvfile.csv, FILE_IGNORE_NEW_LINES));

La sortie est quelque chose comme ceci:

[ "foo, bar, baz", "foo, foo, bar", "Bla, Bla, blubb"]

dans mon fichier html de base que je charge de cette manière:

$(document).ready(function(){ 
    $.getJSON("curlcsvfetcher.php", function(data) { 
    $('#data').empty(); 
    var columnseperator  = "|"; 
    var commentindicator = "#"; 
    var textqualifier = '"' 
    filltable2(data,columnseperator,commentindicator,textqualifier); } 
); 

cela fonctionne très bien avec la fonction filltable() mais pas avec filltable2(): 012 La fonction filltable() génère la sortie avec une colonne et 3 lignes. Mais maintenant je veux exploser chaque ligne dans (ce cas 3) les colonnes.

Il doit y avoir un problème avec mon code dans la fonction filltable2() et je ne sais pas ce que je fais mal.

La sortie de filltable2() est juste une ligne dans la table.

Merci beaucoup!

PS: Ce problème est lié à mon last question mais je pense que le problème fondamental est sans rapport, donc je créé une nouvelle question

+0

question idiote, vous passez des barres verticales comme le séparateur dans le CSV, non? – gonzofish

+0

FYI, à la fois gonzofish et Yogendra trouvé une faille dans le code .. Les deux problèmes doivent être résolus. – tomdemuyt

Répondre

3

Je pense qu'il est parce que dans la ligne de séparation, vous donnant:

data.split(columnseperator); 

Lorsque vous entendez

item.split(columnseperator); 

ou

data[index].split(columnseperator); 
+1

ou data [index] .split (columnseperator); – gonzofish

+1

Merci les gars. C'était trop facile, je pense que je dois aller me coucher. 3 heures n'est pas un bon moment pour le code :-) Merci beaucoup! – vo1d

4

conseils I pour changer votre boucle for:

for (var column in columns){ 
     tddata = tddata +'<td>'+column+'</td>'; 
    } 

comme:

for (var i= 0; i < columns.length; i++){ 
    tddata = tddata +'<td>'+columns[i]+'</td>'; 
} 

Essayez de cette façon. Si ça ne marche pas. Veuillez alerter data avant la boucle et tddata après la boucle et partager.

+0

Merci, la boucle for est très facile à déboguer. – vo1d

+0

D'accord. L'utilisation de 'for ... in' avec des tableaux a quelques problèmes plutôt connus allant de l'absence de promesse d'ordre de clé à des méthodes de type Array.prototype monkeypatched qui saignent. –