阅读用户在网页上上传的文件后无法发布数据

时间:2017-10-10 04:02:58

标签: javascript post

我试图通过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之前等待文件被读取?

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

尝试将post方法放在fr.onload方法中,在那里你可以得到结果警告。

答案 1 :(得分:0)

由于fr.readAsText是异步的,您需要等待fr.onloadfr.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