动态加载脚本后使用 papaparse
Using papaparse after loading script dynamically
原创
我正在我的 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
的 None 在 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) 为什么它是在我的 complete
-回调中返回 undefined
?
更新
我已经按照评论中的建议添加了 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' }
},
然而仍然未定义。
你能尝试在你的 before 函数中显式返回一个 { action="continue" }
吗?
你可能 运行 成为这个问题的变体 - https://github.com/mholt/PapaParse/issues/18
因此解决方案非常简单。 complete: function(results,file)
和 step:function(results,parser)
需要在配置文件中,因为这是每个文件配置。
如果没有为每个文件定义,显然步骤不会 运行。
原创
我正在我的 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
的 None 在 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) 为什么它是在我的 complete
-回调中返回 undefined
?
更新
我已经按照评论中的建议添加了 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' }
},
然而仍然未定义。
你能尝试在你的 before 函数中显式返回一个 { action="continue" }
吗?
你可能 运行 成为这个问题的变体 - https://github.com/mholt/PapaParse/issues/18
因此解决方案非常简单。 complete: function(results,file)
和 step:function(results,parser)
需要在配置文件中,因为这是每个文件配置。
如果没有为每个文件定义,显然步骤不会 运行。