2012-09-22 88 views
0

我在ajax事件服務器端創建一個word文檔,並作爲響應如果沒有錯誤我想推它下載。是否有可能與jQuery的Ajax?我的代碼看起來在這一刻,因爲它遵循jquery ajax響應下載文件

   $.ajax({ 
         type: "POST", 
         url: 'docsx.php', 
         data: $("#edit_form").serialize(), // serializes the form's elements. 
         success: function(data) 
         { 
         **here should be fired the download** // show response from the php script. 
         }, 
         error:function(){ 

          alert('Es gibt ein Fehler bei Daten übetragung!'); 

         } 
        }); 
+2

你可以只重定向到一個網頁,會強制下載(通過設置適當的頭)。另一種選擇是使用[this](http://filamentgroup.com/lab/jquery_plugin_for_requesting_ajax_like_file_downloads/),但不幸的是它還沒準備好。看起來他們還在試驗它。 –

+0

感謝您的反饋,我以前一直在看你的建議鏈接,但沒有在我的案件工作,但是你的第一個建議是做我想做的。非常感謝 – kakuki

回答

0

我曾經做過自己:您可以生成PHP文件,把它放在你的服務器上的某個地方,然後路徑返回到您的腳本。接下來,創建一個隱藏的iframe,並調用一個簡單的腳本,該腳本只是讀取文件並將其返回並設置相應的標題以強制下載。結果將是不刷新頁面的強制下載。

+1

在我的debian環境中,這段代碼一直在做相應的工作window.location.href ='to_download.docx'; – kakuki

0

您無法使用JavaScript來觸發下載。只是不要爲此使用AJAX。使用標準的形式提交給docsx.php腳本:

<form action="docsx.php" method="post"> 
    ... some input fields 

    <input type="submit" value="Download" /> 
</form> 
+0

這個工作有點複雜我有一個jQuery UI對話框,並且在按鈕事件中,我激發了很多任務,並且我不想讓用戶跳出對話框。 – kakuki

+1

如果您的服務器端腳本直接使用Content-Disposition:attachment將文件傳輸到響應,則不會跳出對話框; filename = foobar.txt'頭。這將直接提示用戶選擇一個位置來將文件保存到他的計算機上,而無需離開當前頁面。 –

+0

好的,謝謝我要嘗試一下,但是這個window.location.href ='to_download.docx'怎麼樣。文檔正在創建,並且我正在使用此片段作爲ajax響應下載。在這種情況下會有懷疑嗎? – kakuki

0
<div id="Status_Update" title="Update your Status Here"> 
    <form method="post" action="update_status.php?<?php echo(SID); ?>" name="Status_form" id="Status_form"> 
     <span id="sprytextfield1"> 
     <label for="text1"></label> 
     <label for="textfield6"></label> 
     <textarea class="ns_tb" name="status_update_box" cols="60" placeholder="What is on your mind" style="font-family:'Lucida Sans Unicode', 'Lucida Grande', sans-serif; border: thin solid #0C0; border-radius:9px;"></textarea> 
<span class="textfieldRequiredMsg">A value is required.</span></span> 
     <input type="submit" name="status_update_button" id="button" value="Post" style=" background-color:#0C0; border-radius:9px;)"/> 
     <a href="#" id="hide_status_box" tittle="Hide the Status Comment Box">hide</a> 
    </form> 
    </div>