0

お願い助けて。私の間違いはどこですか?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);    
  }
?>

前もって感謝します !

4

2 に答える 2

2

ファイルをダウンロードする 3 つの簡単な方法:

  1. 古き良きフォルム

    <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>
    
  2. JavaScript で古き良きフォームを送信する

    <script type="text/javascript">
    function download(){
        document.getElementById("the-form").submit();
    }
    </script>
    <input type="Submit" value="Download with JavaScript" onclick="download()">
    
  3. GET に切り替えます ( への変更が必要do_query.phpです):

    <a href="/do_query.php?info=test">Download with link</a>
    

AJAX の問題は、現在の (HTML) ページで実行されることです。ページの HTML を操作したり、別の場所にリダイレクトしたりできますが、カスタム HTTP 応答を送信することはできません。

于 2013-04-16T16:05:50.617 に答える