[英]How to save dynamically XML file from server to a local machine?
請幫幫我。 我的錯誤在哪里? 我在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);
}
?>
提前致謝 !
下載文件的三種簡單方法:
好老形式
<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響應。
在使用AJAX時,無法提示用戶保存文件,您需要將瀏覽器窗口指向要下載的文件的URL。 這也意味着您需要使用GET方法而不是POST方法來傳輸文件。
嘗試這個:
JS:
function showAl(url)
{
window.location.href = '/do_query.php?info=' + url;
}
PHP:
if (isset($_GET['info']))
{
$info = $_GET['info'];
// ...
這應該提示用戶下載文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.