新手到脚本,所以请是友好的。
正在尝试使用jquery-csv解析器从本地文件创建图表。使用google viz。
这段代码似乎无法获得返回值。需要所选解析文件的返回值。
使用回调更好吗?我该如何实现它呢?我试过了,但似乎做不对。
function chartData(fileToParse) {
var reader = new FileReader();
reader.readAsText(fileToParse);
reader.onload = function(){
var csv = event.target.result;
var parsedData = $.csv.toArrays(csv,{onParseValue:$.csv.hooks.castToScalar});
return parsedData
};
return reader.onload.value;
reader.onerror = function(){ alert('Unable to read ' + file.fileName); };}
我已经使用了修改后的代码在屏幕上以表格的形式显示数据,但在将数据发送到google服务器时遇到了麻烦。
任何建议或指示都非常感谢。
发布于 2012-10-23 04:00:11
“使用回调更好吗?”
是的,这将是正确的解决方案
“我该如何实现它?”
chartData函数定义第二个参数。chartData时,将回调作为第二个参数传递给事件处理程序,并以调用任何函数的相同方式调用该回调,但将所需的数据传递给它。 // receive it-----v
function chartData(fileToParse, callback) {
var reader = new FileReader();
reader.readAsText(fileToParse);
reader.onload = function () {
var csv = event.target.result;
var parsedData = $.csv.toArrays(csv, {
onParseValue: $.csv.hooks.castToScalar
});
callback(parsedData); // call it
};
reader.onerror = function () {
alert('Unable to read ' + file.fileName);
};
}所以你可以这样调用它:
chartData('file/path', function(parsed) {
console.log(parsed);
});发布于 2012-10-23 04:01:20
首先,请不要要求我们友善,因为这是您的“不友善”假设
通常,您不能从异步函数返回值。你应该考虑为什么你想要返回值,看看你是否可以从另一个角度看它。例如,您需要如何处理parsedData..填充文本区域?,将一些元素附加到Dom?.那就在这里做吧!
让我们知道您需要从parsedData获得什么,我们可以提供帮助。
最后,在万不得已的情况下,您可以将响应附加到全局对象(如window ),但这会产生一系列其他问题
https://stackoverflow.com/questions/13018804
复制相似问题