2012-04-11 189 views
13

Duplicar posibles:
jquery - Read a text file?La lectura de un archivo de texto con jQuery

quiero leer un archivo de texto local, usando jQuery. Así que intento esto:

$.get('file_to_read.txt', function(data) { 
    do_something_with(data) 
}); 

Sin embargo, jQuery interpreta "file_to_read.txt" como un archivo html y me sale un error de Javascript, porque no es el formato correcto y "do_something_with" no tiene el efecto deseado, ya que los datos se no es una cadena.

el documento jQuery dice que necesito especificar el tipo de datos. Sin embargo, solo enumeran html, xml, json y script como posibles archivos de datos; ¿Qué debo hacer con un archivo de texto simple que quiero cargar directamente en una cadena?

+0

por qué no hacerlo con formato HTML y luego convertir a la cuerda? –

+0

Posible dulcificación http://stackoverflow.com/questions/1981815/jquery-read-a-text-file – coder

+0

No se puede leer un archivo de texto "local" con jQuery. jQuery no tiene acceso al sistema de archivos del lado del cliente. ¿Te refieres a "local" como parte de tu dominio? – meagar

Respuesta

30

Utilice 'text' tipo de datos en su solicitud $.get().

$.get('file_to_read.txt', function(data) { 
    do_something_with(data) 
}, 'text'); 
// ^------last argument 

De lo contrario, jQuery adivina lo que se devolvió.


Recuerde, $.get es sólo un envoltorio comodidad para $.ajax. Los tipos de datos se enumeran en la $.ajax() docs ...

tipoDatos

defecto: suposición inteligente (XML, JSON, script o HTML)

El tipo de datos que usted está esperando de regreso del servidor. Si no se especifica ninguno, jQuery intentará inferirlo basándose en el tipo MIME de la respuesta (un tipo MIME XML arrojará XML, en 1.4 JSON arrojará un objeto JavaScript, en 1.4 script ejecutará el script, y cualquier otra cosa será devuelto como una cadena). Los tipos disponibles (y el resultado pasado como el primer argumento para su devolución de llamada correcta) son:

"xml": devuelve un documento XML que se puede procesar a través de jQuery.

"html": devuelve HTML como texto sin formato; las etiquetas de script incluidas se evalúan cuando se insertan en el DOM.

"script": Evalúa la respuesta como JavaScript y la devuelve como texto sin formato. Inhabilita el almacenamiento en caché al agregar un parámetro de cadena de consulta, "_ = [TIMESTAMP]", a la URL a menos que la opción de caché esté establecida en verdadero. Nota: Esto convertirá las POST en GET para solicitudes de dominio remoto.

"json": Evalúa la respuesta como JSON y devuelve un objeto JavaScript. En jQuery 1.4, los datos JSON se analizan de manera estricta; cualquier JSON malformado es rechazado y se produce un error de análisis. (Consulte json.org para obtener más información sobre el formateo JSON correcto).

"jsonp": Se carga en un bloque JSON utilizando JSONP. Agrega un extra "? Callback =?" hasta el final de su URL para especificar la devolución de llamada. Inhabilita el almacenamiento en caché al agregar un parámetro de cadena de consulta, "_ = [TIMESTAMP]", a la URL a menos que la opción de caché esté establecida en verdadero.

"texto": Una cadena de texto sin formato.

valores múltiples separados por espacios: a partir de jQuery 1.5, jQuery puede convertir un tipo de datos de lo que recibió en el encabezado Content-Type a lo que necesita. Por ejemplo, si desea que una respuesta de texto se trate como XML, use "text xml" para el dataType. También puede realizar una solicitud JSONP, recibirla como texto e interpretarla por jQuery como XML: "jsonp text xml". Del mismo modo, una cadena abreviada como "jsonp xml" primero intentará convertir de jsonp a xml y, en su defecto, convertir de jsonp a texto, y luego de texto a xml.

+0

Gracias. Para referencia futura: ¿cómo podría saber que el "texto" es un tipo de datos legítimo para aprobar? No vi en la documentación de jQuery. –

+2

@GadiA: Acabo de actualizar mi respuesta con los documentos de '$ .ajax'. Los métodos como '$ .get' son solo un contenedor para' $ .ajax', por lo que generalmente debe consultar esos documentos. –

+0

¿Es posible leer el archivo de texto desde el control de carga html 'file'? –

1

intento tipoDatos "texto" (o "html", que debería funcionar si no tiene etiquetas HTML "escritura" en ella)

Cuestiones relacionadas