2015-09-03 52 views
0

我試圖循環訪問csv文件的列和行,但只獲取第一行結果。使用jQuery遍歷列

這是我的csv佈局2列與行

name  total 
subtitle1 
name1  65% 
name2  65% 
name3  65% 
name4  65% 
total  60% 
subtitle2 
name1  65% 
name2  65% 
name3  65% 
name4  65% 
total  60% 
subtitle3 
name1  65% 
name2  65% 
name3  65% 
name4  65% 
total  60% 
subtitle4 
name1  65% 
name2  65% 
name3  65% 
name4  65% 
total  60% 

$.ajax({ 
 
\t url: 'test.csv', 
 
\t type: "GET", 
 
\t dataType: "text", 
 
\t contentType: "text/csv", 
 
\t success: function (data) { 
 
\t \t var columns = data.split(/\n/); 
 
\t \t var column1 = columns[0].split(/\,/); 
 
\t \t var column2 = columns[1].split(/\,/); 
 
\t \t var data = {}; 
 
\t \t for(var i=0; i<column1.length; i++) { 
 
\t \t \t data[column1[i].trim()] = column2[i].trim(); 
 
\t \t \t console.log(data); 
 
\t \t }  \t \t 
 
\t } 
 
});

+0

你爲什麼要發送'contentType:「text/csv」'?這是參數的類型,而不是響應。 – Barmar

+0

你的數據中沒有逗號,你爲什麼分裂? – Barmar

+0

你沒有遍歷所有的行。 '列[0]'是第一行,'列[1]'是第二行。你忽略了所有其他行。 – Barmar

回答

0

在您的例子你已經分裂文件放入columns這實際上是行和列沒有,那麼你已將第一排和第二排分爲兩欄 - 第一欄和第二欄。

你應該做的是按行第一次分裂,則每行 - 按列拆分:

$.ajax({ 
    url: 'test.csv', 
    type: "GET", 
    dataType: "text", 
    contentType: "text/csv", 
    success: function (data) { 
     // Splitting the file into rows 
     var rows = data.split(/\n/); 
     for (var rowIndex in rows) 
     { 
      // For every row - split it into columns 
      var columns = rows[rowIndex].split(/,/); 
      for (var colIndex in columns) 
      { 
       var colValue = columns[colIndex].trim(); 
       // here you have the colValue to play with 
       console.log(colValue); 
      }   
     } 
    } 
}); 
+0

如果我想訪問字幕並在html中打印,該怎麼辦? $(「。subtitle」)。each(function(index,value){ \t \t value.innerHTML = data.colValue; \t \t}); –

+0

對不起,但我不明白你在找什麼,再加上它似乎是一個不同的問題。 – uri2x

+0

隨着你的答案代碼,我得到的所有數據都很棒,現在我該如何處理這些數據並將其打印在我的html頁面上。例如,如果我想只在h3標籤中打印字幕,我曾經使用過。每個函數都像這樣$(「。subtitle」)。each(function(index,value){value.innerHTML = data.colValue;} ); –

0

你遍歷錯誤的事情。 data.split('\n')返回一個行數組,但你沒有循環。

循環遍歷所有行。在這個循環中,以空格分隔行(數據中沒有逗號)。

var result = {}; 
var rows = data.split('\n'); 
for(var i = 0; i < rows.length; i++) { 
    var columns = rows[i].split(/\s+/); 
    if (columns.length > 1) { // skip the subtitle rows 
     result[columns[0]] = columns[1]; 
    } 
}