Плагин jQuery CSV не будет разбивать строки на массивы - PullRequest
4 голосов
/ 14 июля 2010

Я пытаюсь использовать плагин jQuery "CSV", как описано здесь: http://code.google.com/p/js-tables/wiki/CSV

Согласно документации:

// 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] ]

Но когда я пытаюсь сделать что-то подобноепросто кажется, что \ n - это другой символ в середине элемента массива.

Что я делаю не так?Я использую jQuery 1.4.2 и Firefox 3.5.10 для тестирования.Я также попробовал это с jQuery 1.3 и получил тот же результат.

Если это проблема с плагином, то кто-то может предложить другой плагин для чтения CSV?Моя конечная цель - преобразовать CSV из строки в таблицу HTML;единственный плагин, который я могу найти, который специально для этого требует, чтобы CSV исходил из файла, что нежелательно для моей задачи.

Вот минимальная тестовая страница, которую я собрал, которая показывает, что она не разделяет строкив подмассивы:

<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>

Ответы [ 2 ]

3 голосов
/ 14 июля 2010

Убедитесь, что вы используете последнюю версию плагина. Я скопировал и вставил ваш пример, используя jQuery 1.4.2 и (ныне устаревший) CSV-плагин из http://js -tables.googlecode.com / svn / trunk / jquery.csv.min.js и работает нормально.

http://jsfiddle.net/KRzzF/

Протестировано в IE8, IE6, Google Chrome и Firefox. Я тоже проверял

alert(lines[1][1]);

и, конечно же, предупреждение показывало "d".

1 голос
/ 14 июля 2010

Если вы имеете дело только с простыми данными (без кавычек), вы можете сделать что-то вроде этого:

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