【问题标题】:How to generate a .doc using AJAX and PHP如何使用 AJAX 和 PHP 生成 .doc
【发布时间】:2018-06-24 02:21:22
【问题描述】:

今天我需要一些帮助,我知道这并不难,并且在本网站的 php 中执行此操作有很多帮助,但我找不到 AJAX,我现在正在学习的技术,我想掌握有一天。

我的代码如下。

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

因此,当“descarga”类的按钮创建一个“数据包”时,我使用它与 post 方法一起将数据发送到名为 descargarPublicacion.php 的 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);
    }
}

如何使用 ajax 和 jquery 从 html 生成 .doc 文件?我知道我几乎拥有它,它应该是一些细节,但我不知道是哪一个,这就是为什么我要求一些有经验的帮助!谢谢!

【问题讨论】:

    标签: javascript php jquery html ajax


    【解决方案1】:

    我不明白您为什么要通过 ajax 提供 .doc 文件。在我看来,通过普通的 GET 请求提供有效的 .doc 会更容易。

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

    php部分(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 并打印/回显文本内容

    【讨论】:

    • 是的,我知道有一种更简单的方法,但是我开始使用 ajax,我想在每种情况下都尝试一下,在这种情况下,我想做的是,当我单击一个按钮时附加到包含有关文件的信息的 div 以下载它,而无需从站点移动或修改 url。另外,当我按下它时,它会弹出一个弹出窗口,说明请求的结果,如果成功与否。我想你更了解它。顺便说一句,图书馆我明天会试一试:))
    • 只是为了获得更多信息 - 使用 ajax 下载文件并不容易,因为 javascript 无法将文件保存到本地计算机。但是请留意这个博客条目johnculviner.com/… - 我还没有尝试过,但演示看起来不错,也许它适合你
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-31
    • 2014-04-03
    • 1970-01-01
    • 2021-07-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多