ajax post 调用PHP函数,如何实现下载文件?ubuntu系统

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ajax post 调用PHP函数,如何实现下载文件?ubuntu系统相关的知识,希望对你有一定的参考价值。

php里实现下载功能,下载的文件是csv,数据已经统计好了。
下载方式最好不要是存到本地 然后再下载到客户端,如果能实现客户下载后就删除服务器上的文件 那也行。

参考技术A 刚刚做的项目就有这个功能
首先你不可能获取用户下载的结果,所以你不可能知道用户有没有下载,或者下载完了没有,不过你可以这样:
$content="内容";
$filename='1.csv';
header("Content-Type: application/force-download");
header("Content-Disposition: attachment; filename=".urlencode($filename));
echo $content;
这样做根本服务器上根本不会创建文件,所以也就没必要删除。追问

用你的方法 在响应里可以看到数据,但是没有下载。因为我是接收的是post请求?

追答

你用ajax的方法确实不会下载,下载应该是要浏览器访问才能,你看你能不能改下方式,直接跳转到PHP页,因为返回的是个application/force-download,所以不会真的跳转页面,只是弹出下载框。

追问

我不会ajax,php经验才一个月。前台ajax用post给我传了很多参数,统计好数据之后需要保存成csv到客户端,你说的改方式,是我再写个方法,由我get调用?get我该怎么传参;还是ajax来写?能不能简单的写两行代码 参考一下。 不胜感激啊

如何在 ajax 函数调用中发送 var 以发送 POST? [复制]

【中文标题】如何在 ajax 函数调用中发送 var 以发送 POST? [复制]【英文标题】:How to send a var in ajax function call to send POST? [duplicate] 【发布时间】:2015-11-20 22:18:25 【问题描述】:

我调用了一个 ajax 函数,我想发送一个 var,例如:

     <a href="next.php" onclick="sendajax()">reload</a>

从我的 php 页面使用 ajax 函数 POST 发送:

  <script>
 function sendajax()   
    var xmlObj=new XMLHttpRequest();

   xmlObj.open("POST","miscript.php", true);

   xmlObj.setRequestHeader("content-type","application/x-www-form-urlencoded");

   xmlObj.onreadystatechange = function()
    if(xmlObj.readyState == 4 && xmlObj.status == 200)
        document.getElementById("response").innerHTML = xmlObj.responseText;
   
  
   xmlObj.send('name=Status');
 
 </script>

如何添加这个 var 以发送喜欢的内容?:

  function sendajax(myVar) 
 ....
  xmlObj.send(myVar);

我正在尝试添加这个,但只发送文本。

谢谢!

编辑 我认为我的问题不会重复,因为我想从点击的链接发送 vars,而不是像这样写到 var 中:

    var params = "lorem=ipsum&name=binny";

我知道如何编写并传递它,我问:如何将此 var 发送到函数并将其添加/连接到字符串中。不使用表格..谢谢!!!!!!!

我认为我的解释是正确的。

【问题讨论】:

^ 检查第二个答案,使用 FormData 【参考方案1】:

为什么不使用 jQuery?

您可以将按钮作为 this 传递给函数。

<a href="#" onclick="sendajax(this)">clickme</a>
function sendajax(button) 
    var myVar = $(button).html(); // Example. Take some datas from the button

    $.ajax(
        url: 'miscript.php',
        type: 'POST',
        data:  param1: myVar, param2: 'something_else' ,
        success:function(dataFromAjaxResponse, typeFromAjaxResponse) 
            // When the request was successful proceed coding here
            // Variable dataFromAjaxResponse is the response (output) from your php site. 
        ,
        error: function(dataFromAjaxResponse) 
            console.log(dataFromAjaxResponse);
        
    );

【讨论】:

【参考方案2】:

通常,我使用 $.ajax()... 像这样:

$.ajax(
  method: "POST",
  url: "some.php",
  data:  name: "John", location: "Boston" 
)
  .done(function( msg ) 
    alert( "Data Saved: " + msg );
  );

见http://api.jquery.com/jquery.ajax/

【讨论】:

以上是关于ajax post 调用PHP函数,如何实现下载文件?ubuntu系统的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ajax 调用中使用 wordpress 函数

Ajax 如何与 PHP 一起工作?

使用php和ajax实现登录

不清楚ajax post的语法

PHP 从 Ajax 调用接收空的 $_POST 变量

利用ajax实现与php数据交互,并局部刷新页面