2010-06-29 42 views
0

我有點堅持了以下情況:jQuery的Ajax調用和Django

我使用Ajax調用提交表單,我使用表單值做在Django一些「查詢」。發生這種情況時,我得到了正確的查詢集,它以csv的形式爲我提供了一個Http響應。我設置了頭文件和所需的所有東西來獲得'save file as'窗口......不幸的是,這不會發生,因爲ajax調用會將響應放入div中。

這是代碼:

if (vsc=='True'){ 
    ajax_loader(); 
// add pdf, csv $.ajax (todo) 
     $.ajax({ 
    type: "POST", 
     url: "./test", 
      dataType: 'text', 
    success: test, 
    data: {host: ho, log: lo, severity: se, datetimestart: dts, datetimeend: dte, enabled: ena, csv: vsc, pdf: fdp} 

     }); 

所以這個AJAX函數的調用鏈接./test內。在那個URL裏面,我做了一些對象過濾,然後我製作一個http響應對象併發送回去。在成功之後,我希望能夠'將文件另存爲',但此時我不知道如何做到這一點。我成功地在我的html頁面上顯示了div中的響應./test,但'save file as'永遠不會顯示。

我的Django的看法:

def export_csv(request,queryset) 
# do some filtering on queryset and create a csv 
response = HttpResponse(''.join(csv_export), mimetype='text/csv') 
response['Content-Disposition'] = 'attachment; filename=customreportexport.csv' 
return response 

這是我的看法,一切都應該是正常的,我認爲這是真的Ajax調用......上「成功」我必須做一些事情,因此彈出式菜單爲「保存文件爲',只有我不知道如何。我已經嘗試了一些iframe,但我不得不作爲一個URL給'源',這是不可能的,因爲Ajax調用的參數後等...任何幫助嗎?以前我知道有一些語言叫做「IsUpload =真」,太糟糕了它不是在jQuery的阿賈克斯....

希望從你們那裏聽到

+0

看起來像你不接受勸告! – jAndy 2010-06-29 13:51:54

+0

哪位建議? – Thomas 2010-06-29 13:56:03

+1

他意味着您在此網站上提出了6個問題,並且未接受任何提供的答案。機制和暗示在網站上的禮貌是,如果有任何可以被認爲是正確的,你應該接受對你的問題最好的正確答案。 – Greg 2010-06-29 14:06:37

回答

3

這聽起來像這不應該是一個Ajax請求 - 如果你只是POST那個表單,那麼用戶將進入csv url並被提示下載文件。

+0

它不會...我點擊提交在我的表單...我的看法看到它需要產生一個csv,它返回一個HTTPResponse對象,但它不會打開'保存文件爲',你應該怎麼做?這一定是可能的jQuery中/ ajax,它可能在ExtJS ...你能給我一個例子,你應該怎麼做知道POST值(參數)可能是不同的數組,因爲它是'選擇框'... – Thomas 2010-06-29 14:05:12

+0

碎片是正確的。 Ajax在這裏完全不相關且不必要。 – 2010-06-29 14:20:17

+0

它不是......我的內容是在頁面內部重新排列......我只提交相同的表格,只有一個複選框確認是否有csv。當我返回響應時,它將被返回到ajax調用,所以不是外部鏈接...所以它不是無關緊要的。我爲此做了一個解決方案,我只是臨時創建一個文件,並在臨時文件的鏈接上使用iframe進行ajax調用......這是唯一能解決這個問題的方法。太糟糕的jquery錯過了像IsUpload = True類似ExtJS – Thomas 2010-07-02 08:59:22