如何从 FileReader() 输出值
How to output value from FileReader()
我想知道如何从 filereader() 函数中获取值。
这是代码:
$(document).ready(function(){
$('#file_input').on('change', function(e){
readFile(this.files[0], function(e) {
var txt = e.target.result
var lines = txt.split("\n");
var url_check = null;
$.each(lines, function(n, data) {
if (n == 0 && data != "") {
url_check = data
}
});
$('#output_field').text(url_check);
});
console.log(url_check)
});
});
function readFile(file, onLoadCallback){
var reader = new FileReader();
reader.onload = onLoadCallback;
reader.readAsText(file);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="file_input" type="file">
<div id="output_field"></div>
我有这个错误:
Uncaught ReferenceError: url_check is not defined
我的目标是 return 变量 url_check
可以在 readFile 函数之外访问
我还尝试在 readFile 函数之外声明 url_check
,例如:
$(document).ready(function(){
$('#file_input').on('change', function(e){
var url_check = null;
readFile(this.files[0], function(e) {
var txt = e.target.result
var lines = txt.split("\n");
$.each(lines, function(n, data) {
if (n == 0 && data != "") {
url_check = data
}
});
$('#output_field').text(url_check);
});
console.log(url_check)
});
});
function readFile(file, onLoadCallback){
var reader = new FileReader();
reader.onload = onLoadCallback;
reader.readAsText(file);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="file_input" type="file">
<div id="output_field"></div>
由于您在 $(document).ready(function() ...
中声明了 url_check
变量,这意味着它只能在那里访问。一种解决方案是全局声明参数,以便函数的任何更改仍然可见。如果你想在分配变量后对它做些什么,你必须立即调用那里的函数。之前调用它可能会导致空结果,因为文件尚未处理。请参阅下面的 jsfiddle。我对它进行了测试,它可以满足您的需求。
$(document).ready(function() {
$('#file_input').on('change', function(e) {
readFile(this.files[0], function(e) {
var txt = e.target.result
var lines = txt.split("\n");
if (lines && lines.length > 0)
url_check = lines[0];
$('#output_field').text(url_check);
console.log(url_check);
callbackPrint();
});
});
});
var url_check = null;
function readFile(file, onLoadCallback) {
var reader = new FileReader();
reader.onload = onLoadCallback;
reader.readAsText(file);
}
function callbackPrint() {
console.log("From testPrint: " + url_check);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="file_input" type="file">
<div id="output_field"></div>
由于该函数是 运行 异步的,您应该考虑对 resolve/return 和 url_check 使用承诺或回调函数,以便在 readFile 函数之外访问它。
如果只是想把url_check的值log出来,console.log(url_check)
必须放在readFile里面
我想知道如何从 filereader() 函数中获取值。
这是代码:
$(document).ready(function(){
$('#file_input').on('change', function(e){
readFile(this.files[0], function(e) {
var txt = e.target.result
var lines = txt.split("\n");
var url_check = null;
$.each(lines, function(n, data) {
if (n == 0 && data != "") {
url_check = data
}
});
$('#output_field').text(url_check);
});
console.log(url_check)
});
});
function readFile(file, onLoadCallback){
var reader = new FileReader();
reader.onload = onLoadCallback;
reader.readAsText(file);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="file_input" type="file">
<div id="output_field"></div>
我有这个错误:
Uncaught ReferenceError: url_check is not defined
我的目标是 return 变量 url_check
可以在 readFile 函数之外访问
我还尝试在 readFile 函数之外声明 url_check
,例如:
$(document).ready(function(){
$('#file_input').on('change', function(e){
var url_check = null;
readFile(this.files[0], function(e) {
var txt = e.target.result
var lines = txt.split("\n");
$.each(lines, function(n, data) {
if (n == 0 && data != "") {
url_check = data
}
});
$('#output_field').text(url_check);
});
console.log(url_check)
});
});
function readFile(file, onLoadCallback){
var reader = new FileReader();
reader.onload = onLoadCallback;
reader.readAsText(file);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="file_input" type="file">
<div id="output_field"></div>
由于您在 $(document).ready(function() ...
中声明了 url_check
变量,这意味着它只能在那里访问。一种解决方案是全局声明参数,以便函数的任何更改仍然可见。如果你想在分配变量后对它做些什么,你必须立即调用那里的函数。之前调用它可能会导致空结果,因为文件尚未处理。请参阅下面的 jsfiddle。我对它进行了测试,它可以满足您的需求。
$(document).ready(function() {
$('#file_input').on('change', function(e) {
readFile(this.files[0], function(e) {
var txt = e.target.result
var lines = txt.split("\n");
if (lines && lines.length > 0)
url_check = lines[0];
$('#output_field').text(url_check);
console.log(url_check);
callbackPrint();
});
});
});
var url_check = null;
function readFile(file, onLoadCallback) {
var reader = new FileReader();
reader.onload = onLoadCallback;
reader.readAsText(file);
}
function callbackPrint() {
console.log("From testPrint: " + url_check);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="file_input" type="file">
<div id="output_field"></div>
由于该函数是 运行 异步的,您应该考虑对 resolve/return 和 url_check 使用承诺或回调函数,以便在 readFile 函数之外访问它。
如果只是想把url_check的值log出来,console.log(url_check)
必须放在readFile里面