2012-05-11 5 views
0

クライアント側のファイルに文字列を書く必要がありますが、インターネットプロトコルではセキュリティ上の問題が認められていないため、これは私の回避策です。 Stringを取得するためにDatabaseを照会するJSPを呼び出します。ユーザーに「名前を付けて保存」ダイアログを表示し、指定したローカルパスにこの文字列を書き込む必要があります。JSPのSave-Asウィンドウを表示する

私のJavaScript関数:JSPでは

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(); 
} 

、私はこのようなものがあります:私は得られた結果を言って、アラートを取得しながら、

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

を私はSave Asダイアログが表示されません。私がこれをやっているのは初めてです。何か間違っているのか教えてください。

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

答えて

2

AJAX(XMLHttpRequest)ではなく、通常のHTTPリクエストを使用します。

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

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

+0

素晴らしいです。しかし、なぜAJAXリクエストがコンテンツ処理のために機能しないのですか? – Shankar

+0

AJAXを使ってディスクにファイルをダウンロードすることはできません。 http://stackoverflow.com/questions/3502267/download-a-file-using-ajaxおよびhttp://stackoverflow.com/questions/676348/allow-user-to-download-file-using-ajaxを参照してください。 –

関連する問題