2010-08-25 39 views
13

¿Alguien sabe de un tutorial sobre cómo leer datos de un archivo del lado del servidor con JS? No puedo encontrar ningún tema sobre esto cuando lo googleo. Traté de usarlo, pero parece que no funciona. Solo quiero leer algunos datos de un archivo para mostrarlos en la página. ¿Esto es posible?Lectura del archivo del lado del servidor con Javascript

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

¿Está ejecutando el JS en una página web? Si es así, ¿qué quiere decir con "archivo del lado del servidor", el código de script de Java se ejecuta en el lado del cliente (navegador) y la forma de obtener archivos del servidor es realizar una solicitud http. – Jaime

+2

el archivo que tengo se almacena en el servidor y la secuencia de comandos se ejecutará en la carga de la página. ¿Es posible hacer esto? – shinjuo

+1

Como mencionan otros, busque AJAX y use jQuery o MooTools (u otro marco) para facilitar su camino. – Jaime

Respuesta

9

Para lograr esto, debe recuperar el archivo del servidor utilizando un método llamado AJAX.

Me gustaría buscar en bibliotecas de JavaScript como Mootools y jQuery. Hacen de AJAX un uso muy simple.

<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> 

Si subes de que el directorio que reside en test.csv en su servidor web y carga la página, debería ver el contenido de test.csv aparecen en el área de texto definido.

+0

Considere el uso de una versión más nueva de mototools porque uno tiene muy malos conflictos con JQuery, puede usar -> GOXR3PLUS

7

Necesita usar AJAX. Con jQuery el código puede tener este aspecto:

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

o si no desea utilizar las bibliotecas utilizar el objeto XMLHTTPRequest prima (pero que tiene diferentes nombres en diferentes navegadores

 
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); 

ACTUALIZACIÓN 2017 no ha podido recuperar la nueva API, se puede utilizar de esta manera:

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 si es necesario apoyar navegador no es compatible con la API de búsqueda, puede usar polyfill que github created

+8

Intenta dar más respuestas útiles. Nos gusta ver respuestas que son mejores que "ir a google". – Oded

+2

Descartaría esta respuesta, pero ya he alcanzado mi límite diario, así que tómelo como una advertencia :-) –

+0

Muy hermosa solución de JQuery. – GOXR3PLUS

Cuestiones relacionadas