2012-10-15 55 views
0

我有它通過加載基本上只是一個CSV PHP腳本:的Javascript斯普利特()不工作

回聲json_encode(文件(csvfile.csv,FILE_IGNORE_NEW_LINES));

的輸出是這樣的:

[ 「FOO,酒吧,巴茲」, 「FOO,FOO,棒」, 「血乳酸,BLA blubb」]

在我的基本的html文件我加載它以這樣的方式

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

這個偉大的工程與功能filltable()但與filltable2()

function filltable(data,columnseperator,commentindicator,textqualifier){ 
    var table_obj = $('table'); 
    $.each(data, function(index, item){ 
     table_obj.append($('<tr id="'+item+'"><td>'+item+'</td></tr>')); 
    }).insertAfter('.table'); 
} 
function filltable2(data,columnseperator,commentindicator,textqualifier){ 
    var table_obj = $('table'); 
    var trstart = '<tr>'; 
    var trend = '</tr>'; 
    $.each(data, function(index, item){ 
     table_obj.append($('<tr id="'+item+'"><td>'+item+'</td></tr>')); 
     var columns = data.split(columnseperator); 
     var tddata = ''; 
     for (var column in columns){ 
      tddata = tddata +'<td>'+column+'</td>'; 
      } 
     var rowdata = trstart + tddata + trend; 
     table_obj.append($(rowdata)); 

    }).insertAfter('.table'); 
} 

函數filltable()生成一列3行的輸出。 但是現在我想分解(本例中爲3)列的每一行。

我的代碼在函數filltable2()中一定有問題,我不知道我在做什麼錯。

filltable2()的輸出只是表中的一行。

非常感謝!

PS:這個問題與我的last question但我認爲根本問題是不相關的,所以我創建了一個新的問題

+0

愚蠢的問題,你傳遞垂直酒吧作爲分隔符在CSV,對不對? – gonzofish

+0

僅供參考,gonzofish和Yogendra在代碼中發現了一個缺陷。兩個問題都需要解決。 – tomdemuyt

回答

3

我認爲這是因爲在分割線,你給它:

data.split(columnseperator); 

當你的意思是

item.split(columnseperator); 

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

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

+1

謝謝你們。這很容易,我想我必須去睡覺。上午3點不是代碼的好時機:-)非常感謝! – vo1d

4

我建議改變你的for循環:

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

爲:

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

嘗試這種方式。如果它不起作用。請在循環前提醒data,並在循環和共享後提醒tddata

+0

謝謝,for循環很容易調試。 – vo1d

+0

同意。在數組中使用'for ... in'有一些相當知名的問題,從密鑰順序到monkeypatched Array.prototype方法都沒有保證。 –