Как сгенерировать .doc, используя AJAX и PHP - PullRequest
0 голосов
/ 23 июня 2018

сегодня мне нужна помощь, я знаю, что это не так сложно, и есть много помощи для того, чтобы сделать это в php на этом сайте, но я не смог ничего найти с AJAX, технологией, которую я изучаю сейчас, и я хочу освоить когда-нибудь.

Мой код следующий.

$(".descarga").click(function(){
    var paquete={idArchivo:$(this).val()};
    $.post("includes/descargarPublicacion.php",paquete,procesarDatos);
});

Так что, когда из класса "descarga", я делаю "пакет", который я использую с методом post для отправки данных в php-файл с именем descargarPublicacion.php

Вот так выглядит php файл:

<?php 
session_start(); 
$mysqli = new mysqli("localhost", "root", "", "registroflashback");
if (isset($_GET['idArchivo'])) {
    header("Content-type: application/vnd.msword");
    header("Cache-Control: must-revalidate,post-check=0, pre-check=0");
    header("Content-disposition:attachment;filename=yeaboi.doc");
    header("Expires: 0");

    $idPubliGet=$_GET['idArchivo'];
    $resultadoBusqueda=$mysqli->query("SELECT * FROM publicaciones WHERE idPubli='$idPubliGet'");
    if ($resultadoBusqueda->num_rows>0) {
        //$resultadoBusqueda['titulo'];
        echo 'descarga exitosa';
    }else{
        echo 'descarga no exitosa';
    }
}else{
    echo 'descarga no exitosa';
}
?>

Я провел небольшое исследование, и люди сказали мне использовать заголовки, чтобы конвертировать файл и загрузить его, но он не работает для меня, он не генерирует любой файл, однако он выполняет "echo descarga exitosa", который я использую как возвращаемое значение для следующей функции в файле js.

function procesarDatos(datos_devueltos){
    alert(datos_devueltos);
    if(datos_devueltos=="descarga exitosa"){
        $("#alertaDescarga").show(1000);
    }
    if(datos_devueltos!="descarga exitosa"){
         $("#alertaDescargaError").show(1000);
    }
}

Как я могу сгенерировать файл .doc из html, используя ajax и jquery? Я знаю, у меня это почти, это должно быть некоторые детали, но я не знаю, какой из них, поэтому я прошу опытную помощь! Спасибо!

1 Ответ

0 голосов
/ 23 июня 2018

Я не понимаю, почему вы хотите обслуживать файл .doc через ajax.На мой взгляд, проще предоставить действительный .doc поверх обычного запроса GET.

$(".descarga").click(function(){
    //onClick transfer id via Get-Param and download file
    window.location = "includes/descargarPublicacion.php?idArchivo="+$(this).val();
});

php part (descargarPublicacion.php)

<?php 
if (isset($_GET['idArchivo'])) {
    header("Content-type: application/vnd.msword");
    header("Cache-Control: must-revalidate,post-check=0, pre-check=0");
    header("Content-disposition:attachment;filename=yeaboi.doc");
    header("Expires: 0");

    //ID is available via GET because we send it as Url Param
    $idPubliGet=$_GET['idArchivo'];

    //@TODO fetch relevant data with given ID

    //@TODO generate valid(!) doc File output 
    //- just echo'ing something will not result in an valid document for Word
    echo $coumentContent;       
}
?>

Чтобы предоставить / сгенерировать действительный документ Wordнемного сложнее.Я бы порекомендовал вам заглянуть в библиотеку, которая сделает всю работу за вас.Например, https://github.com/PHPOffice/PHPWord

Если вместо этого вы хотите предоставить простой файл .txt - измените заголовок Content-Type на text/plain и имя файла на yeaboi.txt и напечатайте / отобразите текстовое содержимое

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...