2010-08-25 22 views
13

JS ile bir sunucu tarafı dosyasındaki verilerin nasıl okunacağı konusunda bir öğretici bilen var mı? Bunu yaparken Google'da herhangi bir konu bulamıyorum. Kullanmaya çalıştım ama işe yaramıyor. Sadece sayfada görüntülenmek üzere bir dosyadan bazı verileri okumak istiyorum. Bu mümkün mü?Okuma Sunucusu Yan dosya Javascript ile

var CSVfile = new File("test.csv"); 
var result = CVSfile.open("r"); 
var test = result.readln(); 
+1

JS'yi bir web sayfasında mı çalıştırıyorsunuz? Eğer öyleyse, "sunucu tarafı dosyasını" okuyarak ne demek istiyorsunuz, java script kodu istemci tarafında (tarayıcı) çalıştırılıyor ve sunucudan dosya alma yolu bir http isteği yapıyor. – Jaime

+2

Dosyam sunucuda saklanıyor ve komut dosyası sayfa yüklenmesinde çalışacaktır. Bunu yapmak bile mümkün mü? – shinjuo

+1

Diğerleri gibi, AJAX için arama yapın ve bunu yapmak için yolunuzu kolaylaştırmak için jQuery veya MooTools (veya başka bir çerçeve) kullanın. – Jaime

cevap

9

polyfill'i kullanamazsınız Bunu başarmak için, dosyayı AJAX adlı bir yöntem kullanarak sunucudan almanız gerekir.

Mootools ve jQuery gibi JavaScript kitaplıklarına bakardım. AJAX'ı çok basit bir şekilde kullanırlar. Eğer test.csv web sunucunuzdaki içinde bulunduğu dizine yüklemeyeceğinizi ve sayfa yükleme,

<html> 
    <head> 
     <script src="https://cdnjs.cloudflare.com/ajax/libs/mootools/1.6.0/mootools-core.min.js"></script> 
     <script type="text/javascript"> 
      //This event is called when the DOM is fully loaded 
      window.addEvent("domready",function(){ 
       //Creating a new AJAX request that will request 'test.csv' from the current directory 
       var csvRequest = new Request({ 
        url:"test.csv", 
        onSuccess:function(response){ 
         //The response text is available in the 'response' variable 
         //Set the value of the textarea with the id 'csvResponse' to the response 
         $("csvResponse").value = response; 
        } 
       }).send(); //Don't forget to send our request! 
      }); 
     </script> 
    </head> 
    <body> 
     <textarea rows="5" cols="25" id="csvResponse"></textarea> 
    </body> 
</html> 

, sen test.csv içeriği belirlenen textarea görünmesi gerekir.

+0

Mototools'un daha yeni bir sürümünü kullanmayı düşünün, JQuery ile çok kötü anlaşmazlıklara neden olabilirsiniz -> GOXR3PLUS

7

AJAX kullanmanız gerekir. Eğer kütüphaneler çiğ XMLHTTPRequest nesnesini kullanmak (ama ben

 
function xhr(){ 
    var xmlHttp; 
    try{ 
    xmlHttp=new XMLHttpRequest(); 
    } catch(e) { 
    try { 
     xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); 
    } catch(e) { 
     try { 
     xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); 
     } catch(e) { 
     alert("Your browser does not support AJAX!"); 
     return false; 
     } 
    } 
    } 
    return xmlHttp; 
} 
req = xhr(); 
req.open("GET", "test.cvs"); 
req.onreadystatechange = function() { 
    console.log(req.responseText); 
}; 
req.send(null); 

GÜNCELLEME farklı tarayıcılarda farklı isimler alır kullanmak istemiyorsanız

 
$.ajax({ url: "test.csv", success: function(file_content) { 
    console.log(file_content); 
    } 
}); 

ya: jQuery kütüphanesi ile kod şöyle olabilir 2017 yeni getirme aPI vardır, bu gibi kullanabilirsiniz:

fetch('test.csv').then(function(response) { 
    if (response.status !== 200) { 
     throw response.status; 
    } 
    return response.text(); 
}).then(function(file_content) { 
    console.log(file_content); 
}).catch(function(status) { 
    console.log('Error ' + status); 
}); 

the support is pretty good tarayıcıyı desteklemek için gerekirse o getirme API'sini desteklemiyorsunuz, bu, github created

+8

Daha yararlı yanıtlar vermeye çalışın. "Google'a git" den daha iyi cevaplar görmeyi seviyoruz. – Oded

+2

Bu cevabı reddederdim, ama zaten günlük limitime ulaştım, bu yüzden uyarı olarak alın :-) –

+0

Çok güzel JQuery çözümü. – GOXR3PLUS

İlgili konular