2014-03-28 28 views
0

我試圖構建使用html + css作爲UI的基本CSV編輯器,並且Ruby正在執行字符串解析和操作。使用JS和html的輸入將csv文件傳遞給Ruby文件API

function passFileToRuby (f) { 

var  reader = new FileReader(), 
     txt 

reader.readAsText(f); 
txt = reader.result 

return txt 

} 

和一些HTML:

<html> 
    <head> 
    <script src="../js/script.js"></script> 
    </head> 
    <body> 
    <h1>CSVEditor!</h1> 
    <form action="/form" method="post"> 
      <input type="file" name="file" id="input" onchange="passFileToRuby(this.files[0])"> 
      <input type="submit"> 
    </form> 
    </body> 
</html> 

我試圖通過加載HTML表單CSV文件,將它傳遞給紅寶石(屈),它會分裂,並使其作爲表的內容。

當我加載文件,然後輸入passFileToRuby()行的內容後,一切似乎工作 - console.log(TXT)打印文件的內容到屏幕上。當我將它作爲passFileToRuby函數傳遞給onchange屬性時,它不返回任何內容,txt爲null。

請指教。

回答

0

input更改時可能尚未加載文件 - 這太早了。從控制檯訪問時,瀏覽器有時間上傳內容。

嘗試將loaded事件處理程序附加到閱讀器,而不是直接訪問result

var reader = new FileReader(); 
reader.onload = function(evt) { 
    handleText(reader.result); 
} 
reader.readAsText(f); 

並實施handleText適當。

+0

唉,我不知道handleText應該做什麼,我幾天前纔開始使用JS: – user3471753

+0

好吧!我終於知道它是如何工作的:0)乾杯! – user3471753

相關問題