2017-10-10 104 views
0

我想讀通過JS上傳文件,然後使用POST方法無法閱讀網頁

HTML文件上發佈的內容,另一頁上由用戶上傳的文件後,POST數據:

<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

由於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") 
} 

這也可以防止現在什麼會發生,在$。員額甚至會運行之前沒有選擇文件時,

1

嘗試將post方法放在fr.onload方法中,您可以在其中獲得結果警報。