2012-06-07 39 views
0

我發現這些論壇中的很多答案對我很有用,但會要求您檢查我的這個問題。在Servlet中的saveas對話

我試圖從jquery方法調用的servlet中保存.csv文件。雖然我正在設置標題和content-diposition。流寫入數據後,我沒有在瀏覽器中看到對話框。

function popup(data) { 
    $.post("cisco-fetch-devices", { orderId : data}, 
     function(data) { 
      alert("Data Loaded: " + data); 
     }); 
    }); 
} 

上面jQuery代碼被調用下面的servlet post方法:將數據發送回瀏覽器

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
{ 
    response.setContentType("text/csv"); 
    response.setHeader ("Content-Disposition", "attachment;filename=\"tableincsv.csv\""); 
    java.io.PrintWriter out = response.getWriter(); 
    out.print("test data"); 
} 

後,不顯示對話框。但是,在JS方法的alert消息中正確顯示在servlet out.print中設置的數據。

請給我你的意見。

感謝, 阿迪亞

+0

我應該在成功方法添加任何東西的「另存爲」對話框出現? –

回答

1

簡短的回答:你不能用AJAX,而忽略內容處理標頭,以便能夠養活自己的數據對象做到這一點。你必須依靠瀏覽器,該瀏覽器尊重這個頭文件。

所以,做定期POST(隱藏字段)或GET(有查詢字符串參數)在你的servlet。

或使用用戶Vinodh Ramasubramania on Stackoverflow推薦的this jQuery Plugin來自動化該過程。代碼很短,做到了這一點......

有關於這個話題多個線程:

+0

非常感謝您的回答!但是,你能幫助解決一個問題嗎? - 我無法從動態生成的表單標記中調用servlet Post方法: –

+0

以下是該問題的鏈接:http://stackoverflow.com/questions/10948016/未能夠到呼叫的servlet-的doPost法 - 從JS-形式 –