2014-07-01 43 views
0

我有發送一個簡單的POST請求到第二PHP文件一個簡單的HTML表格:檢測同步POST請求的開始和結束

<form method="POST" action="parse.php"> 

parse.php生成要下載的文件,並將其發送到輸出緩衝區,帶有標頭

header("Cache-Control: private"); 
header("Content-Type: application/stream"); 
header("Content-Disposition: attachment; filename=test.html"); 

我可以在不使用異步請求的情況下從表單頁檢測到已完成/已啓動的下載嗎?當然,我可以找出表單何時提交onSubmit,但是當下載開始或結束時是否觸發了jQuery事件?

+0

如果使用jQuery AJAX或類似呼叫,不是使用回調函數,以執行某些功能的執行結束後。 – Justinas

+1

http://stackoverflow.com/questions/2343418/browser-event-when-downloaded-file-is-saved-to-disk 我認爲cookie解決方案會爲你工作 – eithed

+0

感謝您的答案! cookie解決方案似乎是可能的。如果有的話,我明確尋找一個非ajax解決方案。 –

回答

2

這取決於您使用哪種jQuery方法。

  • jQuery.post()提供了一個名爲「成功」時,交請求成功完成其被稱爲方法。
  • jQuery.ajax()提供了一種稱爲「成功」的方法,與上面相同以及一個稱爲「完成」的方法。不管成功與否,都會調用完整的方法。

可以在鏈接的jQuery文檔中找到更多詳細信息和使用示例。

我剛剛注意到,上面提到的兩個方法在jQuery 1.8之後將被棄用,並且您會更好地使用done()而不是其他提到的方法。請參閱上面鏈接的文檔,瞭解實現您的目標的舊方法和新方法的用法的完整詳細信息。

實施例1(不建議使用):

$.ajax({ 
    type: "POST", 
    url: url, 
    data: data, 
    success: function(data){ 
     // Do something with your data here 
    }, 
    dataType: dataType 
}); 

實施例2:

$.ajax({ 
    url: "http://example.com/url.php", 
    type: 'POST', 
    data: data 
}).done(function(data) { 
    if (console && console.log) { 
     console.log("Sample of data:", data.slice(0, 100)); 
    } 
});