动态加载脚本后使用papaparse

时间:2015-07-20 13:14:18

标签: javascript jquery papaparse

ORIGINAL

我在我的Javascript应用中动态加载Papaparse,如下所示:

$.getScript('path/to/papaparse.js',function() {
    //below script
});

然后我得到这样的解析文件。

$('#csv_file').parse({
    delimiter: ",",
    worker: true,
    skipEmptyLines: true,
    before: function(file,inputElement) {
        console.log(file);
        console.log(inputElement);
    },
    error: function(err, file, inputElement, reason) {
        console.log('error');
        console.log(err);
        console.log(file);
        console.log(inputElement);
        console.log(reason);
    },
    step: function(results,parser) {
        console.log(results);
        console.log(parser);
    },
    complete: function(results,file) {
        console.log(results);
        console.log(file);
    }
});

console.log - 回调中的step {{}}都没有触发,但是它们会从before - 和complete - 回调中打印出来。

before:
    file:
        File {}
        lastModified: 1437396586321
        lastModifiedDate: Mon Jul 20 2015 14:49:46 GMT+0200 (South Africa Standard Time)
        name: "normal.csv"
        size: 254743
        type: "application/vnd.ms-excel"
        webkitRelativePath: ""
    inputElement:
        <input type="file" name="csv_file" id="csv_file" class="form-control half">
complete:
    results: undefined
    file: undefined

有人可以告诉我为什么 a)它没有在step中回复任何内容 - 回调和 b)为什么会这样做在undefined - 回调中返回complete

更新

我按照评论中的建议添加了SCRIPT_PATH

$.getScript('path/to/papaparse.js',function() {
    Papa.SCRIPT_PATH = config.basedir + '/app/lib/papaparse/papaparse.min.js';
    // Papa script
});

之前改变了我的想法:

before: function(file,inputElement) {
    console.log(file);
    console.log(inputElement);
    return { action : 'continue' }
},

但仍然未定义。

2 个答案:

答案 0 :(得分:0)

您可以尝试在之前的功能中明确返回{ action="continue" }吗? 您可能会遇到此问题的变体 - https://github.com/mholt/PapaParse/issues/18

答案 1 :(得分:0)

所以解决方案非常简单。 complete: function(results,file)step:function(results,parser)需要在配置文件中,因为这是每个文件配置。

如果没有为每个文件定义,显然步骤不会运行。