2012-05-11 31 views
0

我需要在客戶端的文件中編寫一個字符串,但由於Internet協議不允許出於安全考慮,這是我做的解決方法:我有一個AJAX請求調用一個查詢數據庫以獲取字符串的JSP。我需要向用戶顯示一個「另存爲」對話框,並將此字符串寫入它們指定的本地路徑。從JSP顯示另存爲窗口

我的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」標籤的內容寫入客戶端系統文件中的方法?

回答

2

使用常規的HTTP請求,而不是AJAX(XMLHttpRequest)之一。

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

這將發送一個HTTP GET,不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 –

相關問題