0

私は基本的に1つのcsvを介してロードするphpスクリプトを持っています:

echo json_encode(file(csvfile.csv、FILE_IGNORE_NEW_LINES));

出力は次のようになります。

["foo、bar、baz"、 "foo、foo、bar"、 "bla、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()は、1列3行の出力を生成します。しかし今、私は(この場合は3)列の各行を分解したいと思います。

関数内のコードに問題があるはずですが、filltable2()何が間違っているのかわかりません。

の出力はfilltable2()、テーブルの1行だけです。

どうもありがとうございます!

PS:この問題は私の最後の質問に関連していますが、基本的な問題は無関係だと思うので、新しい質問を作成しました

4

2 に答える 2

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送信して共有してください。

于 2012-10-15T00:51:16.593 に答える
3

分割線であなたがそれを与えているからだと思います:

data.split(columnseperator);

あなたが意味するとき

item.split(columnseperator);

また

data[index].split(columnseperator);
于 2012-10-15T00:51:03.200 に答える