当前位置: 首页 > 面试题库 >

通过ajax调用php下载文件

夏谦
2023-03-14
问题内容

我有一个按钮,onclick它将调用ajax函数。

这是我的ajax功能

function csv(){

    ajaxRequest = ajax();//ajax() is function that has all the XML HTTP Requests

    postdata = "data=" + document.getElementById("id").value;

    ajaxRequest.onreadystatechange = function(){
        var ajaxDisplay = document.getElementById('ajaxDiv');
        if(ajaxRequest.readyState == 4 && ajaxRequest.status==200){
            ajaxDisplay.innerHTML = ajaxRequest.responseText;           
        }
    }

    ajaxRequest.open("POST","csv.php",false);
    ajaxRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    ajaxRequest.send(postdata);
}

我根据用户输入创建csv文件。创建之后,我希望它提示下载或强制下载(最好是强制)。我在php文件的末尾使用以下脚本来下载文件。如果我在单独的文件中运行此脚本,则可以正常运行。

$fileName = 'file.csv';
$downloadFileName = 'newfile.csv';

if (file_exists($fileName)) {
    header('Content-Description: File Transfer');
    header('Content-Type: text/csv');
    header('Content-Disposition: attachment; filename='.$downloadFileName);
    ob_clean();
    flush();
    readfile($fileName);
    exit;
}
echo "done";

但是,如果我在csv.php的末尾运行它,它会将file.csv的内容输出到页面中(进入ajaxDiv)而不是下载。

有没有办法强制在csv.php的末尾下载文件?


问题答案:

AJAX不适用于下载文件。弹出一个以下载链接为地址的新窗口,或执行document.location = ...



 类似资料:
  • 本文向大家介绍PHP 通过AJAX调用下载文件,包括了PHP 通过AJAX调用下载文件的使用技巧和注意事项,需要的朋友参考一下 使用Ajax下载文件不是一个好主意。而是应使用window.location 或 document.location。 “window.location”具有以下特点- 需要启用JavaScript 它不需要PHP。 它有助于显示站点的内容,并在几秒钟后重定向用户。 重定

  • 问题内容: 所以我知道有很多类似的帖子,但是我认为这足以满足自己的疑问: 我正在用PHP和jQuery构建XLS导出器。我正在尝试使用jQuery发布一个数组(我相信它与GET查询字符串一样长),并用它在我的服务器上生成XLS文件,然后用户可以下载该文件。 过去,我使用隐藏的iframe来完成此操作,但是由于它们只是重定向到url,因此这要求我使用GET,这使我感到紧张。 我的问题是:如果这些文件

  • 问题内容: 我有一个生成CSV文件并将其通过http / ajax get返回到页面的服务。我希望用户单击按钮,调用服务,然后将文件下载到用户的浏览器。 我想使用Angular Way,尽管我认识到这可能与Ajax或浏览器的关系要比Anguler本身更多。 该服务在C#中,它返回的内容是: 调用该服务的控制器代码如下所示。它有效,但是我不知道如何成功: 问题答案: 您无法从常规的ajax GET或

  • 问题内容: 我想创建一个允许强制下载JPG的下载脚本。这是我的PHP脚本: 这是我的js代码的代码段: 使用此代码示例,什么都不会发生。如果我将结果附加到HTML标记中,它将显示文件的内容。 有什么想法可以教浏览器下载此文件吗? 编辑:脚本更新 问题答案: 您无法使用Ajax下载文件。因此,如果您在ajax上发生了某些情况,则应返回url作为响应,并像开始下载过程一样应用它。 这里有一个音符。我记

  • 问题内容: 我正在尝试通过ajax和php调用一些数据库数据。但是ajax调用不起作用,我无法在网络上找到解决方案。 所以这是我的代码: test.php 如果我在浏览器中键入该网址: 通过jsonEncode返回的数据是正确的,但是当我使用jquery将其加载到html页面时,他无法读取数据。 test.html 提前致谢。 问题答案: 您的 变量 没有价值。您想使用 字符串 。也许您也希望能够

  • 问题内容: 我写了一个wordpress插件,在模板中添加了一些注释功能。通过ajax,所有内容都应传输到wordpress数据库中。 问题是-ajax处理程序需要一个php文件,用于通过捕获查询 在用户传输查询时,ajax处理程序将如下所示调用php文件: 该 getvars.php 不知道WordPress的环境,因为它是由用户直接调用提交,我想补充的WordPress的环境类,包括是不是好作