2010-07-14 5 views
4

Je suis en train d'utiliser le plug-in "CSV" jQuery, comme l'indique ici: http://code.google.com/p/js-tables/wiki/CSVplugin jQuery CSV lignes non divisé en tableaux-de-tableaux

Selon la documentation:

// Convert CSV data into array of arrays 
jQuery.csv()("1,2,3\n4,5,6\n7,8,9\n"); // = [ [1,2,3], [4,5,6], [7,8,9] ] 

Mais quand j'essaye de faire quelque chose de similaire, il semble juste traiter le "\ n" comme un autre caractère au milieu d'un élément de tableau.

Qu'est-ce que je fais mal? J'utilise jQuery 1.4.2 et Firefox 3.5.10 pour les tests. J'ai aussi essayé avec jQuery 1.3 et obtenu le même résultat.

Si c'est un problème avec le plugin, alors quelqu'un peut-il suggérer un autre plugin pour lire CSV? Mon but ultime est de convertir CSV d'une chaîne en une table HTML; le seul plugin que je peux trouver qui spécifiquement cela nécessite le CSV à venir d'un fichier, ce qui n'est pas souhaitable pour ma tâche.

Voici une page de test minimal que je mets ensemble, ce qui montre que ce n'est pas séparer les lignes en sous-réseaux:

<html> 
<head> 
    <title>CSVtest</title> 
    <script type="text/javascript" src="jquery-1.4.2.min.js"></script> 
    <script type="text/javascript" src="jquery.csv.js"></script> 
    <script type="text/javascript"> 
    $(document).ready(function() { 
     var lines = $.csv()("a,b\nc,d"); 
     alert(lines[0][1]); // Displays: b 
          //   c instead of the expected b 
    }); 
    </script> 
</head> 
<body> 
</body> 
</html> 
+0

Assurez-vous d'utiliser des guillemets doubles et non simples, qui ne reconnaissent pas les nouvelles lignes. –

+2

@Steven Xu, ce n'est pas le cas des chaînes JavaScript. Mis à part l'évidence, il n'y a aucune différence entre '" 'et' ''. –

Répondre

3

Assurez-vous que vous utilisez le latest version du plugin. J'ai copié et collé votre exemple en utilisant jQuery 1.4.2 et le plugin CSV (maintenant obsolète) de http://js-tables.googlecode.com/svn/trunk/jquery.csv.min.js et cela fonctionne très bien.

http://jsfiddle.net/KRzzF/

Testés dans IE8, IE6, Google Chrome et Firefox. J'ai également testé

alert(lines[1][1]); 

et bien sûr, l'alerte a affiché "d".

+2

Aha .. Dumb vieux moi, je faisais confiance que le premier google match serait la dernière version.Le téléchargement de la version plus récente de votre lien semblait – Josh

+1

Ahem La dernière version de jquery.csv.min.js est @ http://github.com/evanplaice/jquery-csv Je le saurais, je suis l'auteur de jquery-csv. (: –

+0

@Evan: génial, j'ai mis à jour la réponse pour refléter l'emplacement actuel –

1

Si vous ne traitez avec des données simples (pas de cotation), vous pouvez faire quelque chose comme ça :

function csv(text) { 
    var lines = text.split("\n"); 
    for (var i = 0; i < lines.length; i++) { 
    if (!lines[i]) 
     lines.splice(i, 1); 
    else 
     lines[i] = lines[i].split(","); 
    } 
    return lines; 
} 
+0

Je pourrais écrire le code d'analyse moi-même, mais je n'ai pas de contrôle sur le flux entrant de données, il pourrait y avoir des virgules incorporées entre guillemets, des guillemets intégrés entre guillemets, ou d'autres choses CSV standard que je préférerais ne pas avoir à réinventer – Josh

Questions connexes