请帮帮我。我的错误在哪里?我在IIS服务器上有很多XML文件。点击按钮后链接到XML进入JS文件。 JS发送链接到PHP文件。 PHP必须显示保存对话框以保存此链接。见代码:
JS:
function showAl(url)
{
alert(url);
var ajax = getRequest();
ajax.onreadystatechange = function()
{
if(ajax.readyState == 4)
{
...
}
}
ajax.open("POST", "/do_query.php", true);
var data = 'info='+url;
ajax.send(data);
}
PHP:
<?php
if (isset($_POST['info']))
{
$info = $_POST['info'];
header('Content-Type: application/xml;');
header('Content-Disposition: attachment; filename=file.xml;');
readfile(str_replace(" ", "%20", $info), false);
}
?>
提前感谢!
答案 0 :(得分:2)
下载文件的三种简单方法:
旧形式
<form id="the-form" action="/do_query.php" method="post">
<input type="hidden" name="info" value="test">
<input type="Submit" value="Download with regular form">
</form>
使用JavaScript提交好的旧表单
<script type="text/javascript">
function download(){
document.getElementById("the-form").submit();
}
</script>
<input type="Submit" value="Download with JavaScript" onclick="download()">
切换到GET(需要更改为do_query.php
):
<a href="/do_query.php?info=test">Download with link</a>
AJAX的问题在于它在当前(HTML)页面上运行。它可以操纵页面HTML或重定向到另一个位置,但它无法发送自定义HTTP响应。
答案 1 :(得分:0)
使用AJAX时无法提示用户保存文件,您需要将浏览器窗口指向要下载的文件的URL。这也意味着您需要使用GET方法而不是POST方法来传输文件。
试试这个:
JS:
function showAl(url)
{
window.location.href = '/do_query.php?info=' + url;
}
PHP:
if (isset($_GET['info']))
{
$info = $_GET['info'];
// ...
这应该提示用户下载文件。