2012-08-23 86 views
0

點擊時我有一個鏈接處理從服務器下載文件的coldfusion頁面。當我直接在URL中訪問文件時,它的工作原理應該如此,所以我知道該部分正在工作。我的下一步是介紹ajax,以便交互對用戶無縫。這是我的事件處理程序Ajax調用(事件處理函數在初始頁面加載):用jquery和coldfusion下載ajax文件

function fileHandler(){ 
    $('#attachment').click(function(e){ 
     e.preventDefault(); 
     $.ajax({ 
      type:"get", 
      url:"test.cfm", 
      data:{name:"john"} 
     }); 
    }); 
} 

但我什麼也沒得到。這是我第一次使用jQuery的.ajax()。我通常使用.get()和.load()。我檢查了文檔,我的語法顯示正確。有沒有人看到爲什麼我不能讓瀏覽器提示保存文件的問題?謝謝!

回答

3

通過Ajax(XMLHTTPRequest)不能觸發「另存爲」對話框。 Ajax調用將服務器中的數據返回給您的JavaScript應用程序,這就是關於使用Ajax的關鍵。下載文件並將其保存在計算機上只是另一個用例 - 這是一個「瀏覽器作業」,不是你的。

我解決了「問題」,通過在頁面上添加一個隱藏的iframe,這將觸發「另存爲...」對話框,用戶不會注意到它。這就像在另一個標籤中打開地址一樣,只是它隱藏了。

$('body').append(
    $('<iframe>', { 
     src: 'test.cfm?name=john' 
    }).hide() 
); 
+0

謝謝您的回答!有沒有文件解釋爲什麼這是?另外,這意味着一個表單提交,是否正確?我已經有我的表單在其他地方提交:/ –

+0

我也已經在頁面上有一個iframe。以這種方式選擇一個元素會移動iframe,並且不克隆它?我不能那樣做。如果我選擇了我已經擁有的iframe,並設置了src屬性,那麼它能起作用嗎? –

+0

剛剛嘗試過,它工作。謝謝你的幫助! –