XMLHttpRequest para abrir PDF en el navegador

Quiero hacer XMLHttpRequest y, a continuación, abra un archivo PDF en el Navegador mediante el envío del nombre de archivo mediante el método POST.

   xmlhttp.open("POST","pdf.php",true); //CHANGE
   xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
   xmlhttp.send("file="+input);

Es posible o XMLHttpRequest es sólo para HTML?

InformationsquelleAutor user583311 | 2011-01-20

3 Kommentare

  1. 5
    1. No es posible hacer a través de XMLHttpRequest si el URL que usted está consultando, en realidad devuelve los datos de PDF.

      ¿Por qué? Porque la respuesta es una respuesta HTTP que contiene crudo de datos PDF. No hay JavaScript posibilidad de sustituir el actual documento DOM de contenidos con una representación de un PDF contenida en los datos, aunque sí tiene acceso a los datos a través de responseText` atributo (ver también http://www.w3.org/TR/XMLHttpRequest/#the-responsetext-attribute).

    2. Lo que PUEDE hacer es generar un archivo PDF en un archivo temporal accesible a través de una dirección URL de su servidor web y, a continuación, el script enviar la URL para acceder a ese archivo.

      Cuando el controlador de respuesta de los procesos de la dirección URL, puede:

      • Volver a cargar la página actual por el cambio de window.location.href = new_pdf_url

      • De la carga en un <iframe> dentro del documento actual, cambiando iframe del src atributo

      • Que se abra en una ventana separada por window.open(new_pdf_url, XXX)

        Por favor, tenga en cuenta que usted TODAVÍA necesita una dirección URL a un archivo temporal de ubicación para abrir una nueva ventana

    • Pero lo puedo abrir en una nueva ventana?
    • Sólo se puede abrir una nueva ventana si tienes la URL que apunta a una temp archivo PDF. Básicamente, no hay nativos de JavaScript mecanismo para generar un «documento DOM» de un no-contenido HTML. Su navegador PUEDE tener un plug-in para representar que el contenido, pero no puede forzar a que el plugin de procesamiento, a menos que el documento del explorador es (re)carga desde cero. ¿Por qué no simplemente hacer window.open('pdf.php?file='+input, XXX) ?
  2. 0

    Si usted va a abrir el PDF en la misma ventana hay ningún punto en el uso de un XmlHttpRequest, que acaba de establecer ventana.ubicación (window.location.assign("http://example.com/location/file.pdf"), window.location.href="http://etc) de javascript, en lugar de invocar XmlHttpRequest.
    (si usted ha recibido el PDF bytes desde el XmlHttpRequest, ¿cómo vas a convencer al navegador para que se muestre con PdfPluginX de todos modos?)

    Si quieres el PDF en un nueva ventana del navegador uso window.open(...) directamente desde javascript.

    • No quiero revelar la ubicación de los archivos en PDF en dropbox. Tengo un pdf.php que recibe el valor de POST y muestra el PDF. Sólo tengo que encontrar una espera para enviar el POST a pdf.php por javacript.
  3. -1

    Usted puede probar esto:

        var xmlHttp = new XMLHttpRequest();
        xmlHttp.onreadystatechange = function() {
            if (xmlHttp.readyState == 4 && xmlHttp.status == 200)           {
           var file = window.URL.createObjectURL(xmlHttp.response);
            var a = document.createElement("a");
            a.href = file;      window.open(file);
                }
        }
        xmlHttp.open("GET", '/pdf', true); //true for asynchronous     xmlHttp.responseType= "blob";
        xmlHttp.send(null);

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea