0

クライアント側のファイルに文字列を書き込む必要がありますが、インターネットプロトコルではセキュリティ上の懸念から文字列が許可されていないため、これが回避策です。データベースにクエリを実行して取得するJSPを呼び出すAJAXリクエストがあります。弦。ユーザーに[名前を付けて保存]ダイアログを表示し、指定したローカルパスにこの文字列を書き込む必要があります。

私のJavaScript関数:

function openReport(id)
{
    var url = "../reports/reportsHandler.jsp?id=" + id;

    var xmlhttp;
    if (window.XMLHttpRequest)
    {// code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp=new XMLHttpRequest();
    }
    else
    {// code for IE6, IE5
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }

    xmlhttp.onreadystatechange=function()
    {
        if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
            //alert(xmlhttp.responseText);
            alert("result obtained");
        }
    }
    xmlhttp.open("POST", url, true);
    xmlhttp.send();
}

JSPには、次のようなものがあります。

response.setHeader("Content-Disposition", "attachment;filename=report.xml");
out.println(stringObtainedFromDatabase);

結果が得られたことを示すアラートが表示されている間、[名前を付けて保存]ダイアログが表示されません。私がこれを行うのはこれが初めてですが、私が何か間違ったことをしている場合は教えてください。

しかし、JavaScriptで、ユーザーに[名前を付けて保存]ダイアログを表示し、クライアントシステム上のファイルに「div」タグのコンテンツを書き込む方法はありますか?

4

1 に答える 1

2

AJAX()リクエストではなく、通常のHTTPリクエストを使用してくださいXMLHttpRequest

function openReport(id)
{
    var url = "../reports/reportsHandler.jsp?id=" + id;
    window.location = url;
}

これにより、POSTではなくHTTP GETが送信されますが、データを取得していて実際にはサーバー上で何も変更していないため、GETはここで使用する正しいHTTPメソッドのように見えます。

于 2012-05-11T14:56:10.700 に答える