2014-12-21 122 views
0

我打的,我想讀通過瀏覽按鈕由以下HTML標籤的CSV文件有問題:如何閱讀和處理使用JavaScript和jQuery的csv文件?

<input type="file" name="filename" id="filename"> 
<div id="csvimporthint"></div> 

和我的jQuery代碼讀取和處理輸入文件如下:

<script> 
$("#filename").change(function(e) { 
    var ext = $("input#filename").val().split(".").pop().toLowerCase(); 

    if($.inArray(ext, ["csv"]) == -1) { 
    alert('Upload CSV'); 
    return false; 
    } 

    if (e.target.files != undefined) { 
     var reader = new FileReader(); 
     var csvLines; 
     var csvValues; 
     var i; 

     reader.onload = function(e) { 
      csvLines = e.target.result.split("\n"); 
      for(i=1; i<csvLines.length; i++){ 
       csvValues = csvLines[i].split(","); 
       importedLat = csvValues[0];     
       importedLon = csvValues[1]; 
       markerFunc(importedLat, importedLon); 
       addLayer(); 
      } 
      //$("#csvimporthint").html(importedLat + " " + importedLon); 
      reader.readAsText(e.target.files.item(0)); 
     }; 
    } 
    return false; 
}); 
</script> 

我面臨的問題是,我的reader.onload從未被解僱,導致我無法處理我的文件數據。請幫助我找到一個解決方案來運行此代碼。

P.S:爲了寫這上面的代碼,我跟着這個鏈接:http://jsfiddle.net/W8fME/1650/

回答

0

我發現這個問題,我的答案。問題出在腳本標記的jquery代碼中,正確的jquery代碼如下:

<script> 
$("#filename").change(function(e) { 
    var ext = $("input#filename").val().split(".").pop().toLowerCase(); 

    if($.inArray(ext, ["csv"]) == -1) { 
    alert('Upload CSV'); 
    return false; 
    } 

    if (e.target.files != undefined) { 
     var reader = new FileReader(); 
     var csvLines; 
     var csvValues; 
     var i; 

     reader.onload = function(e) { 
      csvLines = e.target.result.split("\n"); 
      for(i=1; i<csvLines.length; i++){ 
       csvValues = csvLines[i].split(","); 
       importedLat = csvValues[0];     
       importedLon = csvValues[1]; 
       markerFunc(importedLat, importedLon); 
       addLayer(); 
      } 
     }; 
     reader.readAsText(e.target.files.item(0)); 
    } 
    return false; 
}); 
</script>