我试图通过JS读取上传的文件,然后使用POST方法将其内容发布到另一个页面
HTML文件:
<div class="sm2 ">
<label for="file" class="control-label">Upload</label>
<input type="file" name="myfile" multiple="multiple" id="myfile">
</div>
Java脚本:
var $i = $('#myfile');
input = $i[0];
if ( input.files && input.files[0] ) {
myfile = input.files[0];
fr = new FileReader();
fr.onload = function() { alert(fr.result); };
fr.readAsText( myfile );
}
else {
alert("File not selected")
}
$.post("/dc/ajax",
{
action: "load_mob1",
data:fr.result
contentType: false,
},
我认为在读取文件之前会调用POST方法。如何在调用POST之前等待文件被读取?
提前感谢您的帮助。
答案 0 :(得分:1)
尝试将post方法放在fr.onload方法中,在那里你可以得到结果警告。
答案 1 :(得分:0)
由于fr.readAsText
是异步的,您需要等待fr.onload
在fr.result
有任何内容之前完成
var $i = $('#myfile');
input = $i[0];
if (input.files && input.files[0]) {
myfile = input.files[0];
fr = new FileReader();
fr.onload = function() {
$.post("/dc/ajax", {
action: "load_mob1",
data: fr.result
contentType: false,
});
fr.readAsText(myfile);
};
} else {
alert("File not selected")
}
这也可以防止现在发生的事情,即使没有选择文件也会运行$ .post