xhr new example ejemplo xmlhttprequest

new - xmlhttprequest javascript ejemplo



xmlhttprequest para archivos locales (3)

He encontrado una solución fácil. Debe agregar "? Application / xhtml + xml" detrás de su URL local "file: /// ..".

Tengo la ruta a un archivo que deseo enviar a un servicio web de descanso del servidor. Estoy usando el objeto xmlhttprequest. El post es el siguiente:

var url = "http://localhost:8080/RestWSGS/jersey/gridsense"; var boundary = "--------------" + (new Date).getTime(); xmlHttp.open(''POST'', url, true); xmlHttp.onreadystatechange = function () { if (this.readyState != 4) return; var result =this.responseText; document.write(result); }; xmlHttp.setRequestHeader(''Content-Type'', ''multipart/form-data; boundary='' + boundary); var part =""; part += ''Content-Disposition: form-data; ''; part += ''name="'' + document.getElementById("filename").name + ''" ; ''; //alert(document.getElementById("filename").value); part += ''filename="''+ document.getElementById("filename").value + ''";/r/n''; part += "Content-Type: application/xml"; part += "/r/n/r/n"; // marks end of the headers part part += ''filename="''+ document.getElementById("filename").value + ''";/r/n''; part+= data; var request = "--" + boundary + "/r/n"; request+= part /* + "--" + boundary + "/r/n" */; request+= "--" + boundary + "--" + "/r/n"; alert(request); xmlHttp.send(request);

Los datos que quiero enviar están en el disco local del cliente. Quiero usar el método get para ello:

var str = document.getElementById("filename").value; var data; var xmlhttp1 = getNewHTTPObject(); xmlhttp1.open("GET", "file:///New Folder/" +document.getElementById("filename").value , false); xmlhttp1.send(null); alert(''hi'' + xmlhttp1.status); xmlhttp1.onreadystatechange = function() { if (this.status == 0) { alert("resp " + this.responseText); data = this.responseText; } }

El archivo: // no funciona. Si pongo mi archivo en el directorio del cliente y elimino el archivo: /// entonces al menos puedo ver abrir xmlhttprequest y dar el estado 200 (¡creo que sí!). Leí que para el estado del cheque del archivo local == 0 en lugar de readystatus == 4, así lo hice, pero todavía da datos variables como indefinidos y, por lo tanto, el archivo no va al servidor. Inicialmente, cuando había accedido al formulario como mi url de descanso, se estaba cargando. Como no estoy usando html5, no puedo obtener el objeto File del elemento input = file. Quiero usar el objeto xmlhttprequest para esto en lugar del elemento de formulario directamente. Por favor, ayúdame con este problema con cualquier sugerencia o sugerencia de KAvita

Incluso si hago la carga mediante el envío del formulario, ¿cómo puedo usar el valor de retorno del servicio web? Esa es la razón por la que necesito usar xmlhttpRequest. Si alguien puede sugerir cómo se utilizará el valor de retorno de la acción, ¡será genial! Kavita


Históricamente, no puede consultar archivos locales desde JavaScript (o no se debería permitir, o algo extraño). Esto sería una grave violación de la seguridad.

Solo hay unas pocas circunstancias en las que puede hacer esto, pero en general involucran configuraciones de seguridad específicas que requieren que se configuren para su navegador, ya sea para eliminar la limitación o para notificar al proceso de ejecución de la página actual que se otorga este derecho excepcional. Esto es, por ejemplo, factible en Firefox editando las propiedades. También es comúnmente correcto cuando se desarrollan extensiones de navegador (por ejemplo, para Chrome o FF) si solicitan los permisos de acceso a archivos.

Otra forma de evitar esta limitación es alojar un servidor web local y declarar hosts virtuales para poder realizar este tipo de solicitud AJAX para recuperar archivos locales. Es bastante común que los desarrolladores web recurran a este truco (más bien como un estándar, en realidad) para tener los beneficios del desarrollo local pero al mismo tiempo replicar un sistema de producción. Podrías, por ejemplo, usar un servidor web ligero como Jetty.

(Otra molestia, que parece haber encontrado, es que algunos navegadores, al menos algunas versiones FF relativamente antiguas, como 3.6.x) a veces devuelven un código de error positivo como 200 cuando las solicitudes se bloquean de acuerdo con sus políticas de seguridad internas. . Puede ser bastante confuso por un tiempo ...).

Finalmente, las API de HTML5 más nuevas proporcionan algunas construcciones nuevas para acceder a los archivos locales. Teniendo en cuenta la lectura:

Otras preguntas de SO también proporcionan indicadores adicionales:


Yo uso un iframe.

<div class="item" onclick="page(event)">HTML5</div> <iframe id="page" src="">

function page(e) { trigger = e.currentTarget.innerHTML; docname = new String(trigger + ".txt"); document.getElementById("page").src = docname; }