2012-10-15 129 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方法都没有保证。 –