Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 通过单击按钮下载文件_Php_Jquery - Fatal编程技术网

Php 通过单击按钮下载文件

Php 通过单击按钮下载文件,php,jquery,Php,Jquery,这是HTML: <button name="download">Download</button> 其中download.php是: if (file_exists($myFile)){ header ("Content-Type: application/json"); header ("Content-Disposition: attachment; filename=$fileName"); header("Cont

这是HTML:

<button name="download">Download</button>
其中download.php是:

if (file_exists($myFile)){
        header ("Content-Type: application/json");
        header ("Content-Disposition: attachment; filename=$fileName");
        header("Content-Length: " . filesize("$myFile"));
        $fp = fopen("$myFile", "r");
        fpassthru($fp);
    } else {
        echo "no file exists";
    }; 

这不会输出任何内容,也不会下载任何文件。我知道PHP脚本正在工作并正在被调用。

不要使用AJAX下载文件。并不是它不能发出请求并接收响应,只是它没有任何有意义的方法来处理响应

另一方面,浏览器本身也会这样做

因此,您可以直接将浏览器指向请求:

$parent.find('button[name=download]').click(function () {
    window.location.href = 'download.php';
});
如果
download.php
正在发送
内容处置:附件的响应则不会以任何方式卸载或修改页面。浏览器将完全独立于当前页面上下文处理此请求的响应,并且在处理响应后,该页面上下文将保持不变

(当然,除非浏览器配置为对该响应执行某些操作,例如始终显示该响应而不是提示保存该响应。但在代码中您对此无能为力。)

事实上,在这一点上,完全删除JavaScript并使其成为一个普通链接更有意义,这将完成同样的事情:

<a href="download.php">Download</a>


您可以将其样式设置为按钮,这可能比运行JavaScript代码的实际按钮更容易访问。(如果浏览器没有启用JavaScript,那么按钮就没用了,但是链接可以正常工作。)

不要使用AJAX下载文件。并不是它不能发出请求并接收响应,只是它没有任何有意义的方法来处理响应

另一方面,浏览器本身也会这样做

因此,您可以直接将浏览器指向请求:

$parent.find('button[name=download]').click(function () {
    window.location.href = 'download.php';
});
如果
download.php
正在发送
内容处置:附件的响应则不会以任何方式卸载或修改页面。浏览器将完全独立于当前页面上下文处理此请求的响应,并且在处理响应后,该页面上下文将保持不变

(当然,除非浏览器配置为对该响应执行某些操作,例如始终显示该响应而不是提示保存该响应。但在代码中您对此无能为力。)

事实上,在这一点上,完全删除JavaScript并使其成为一个普通链接更有意义,这将完成同样的事情:

<a href="download.php">Download</a>


您可以将其样式设置为按钮,这可能比运行JavaScript代码的实际按钮更容易访问。(如果浏览器没有启用JavaScript,那么按钮将无效,但是链接可以正常工作。)

不要发送ajax请求。只需重定向到下载。或者更好的方法是,将按钮设置为锚定标记并删除javascript。可能的重复项不发送ajax请求。只需重定向到下载。或者更好的方法是,将按钮作为锚定标记并删除javascript。可能是它的副本!我删除了AJAX,但保留了click处理程序,以便向用户提供一条简短的反馈消息,感谢您的帮助!就这样!我删除了AJAX,但保留了click处理程序,以便向用户提供一条简短的反馈消息,感谢您的帮助!