2011-11-03 59 views
0

我有一個JavaScript調用:觸發的JavaScript在ASP MVC FileResult回報

window.location.replace(instanceExtension(baseURL + "/AccountsReceivable/PrintStatementOfAccount?clientId=" + clientId, -1)); 

而且PrintStatementOfAccount()方法需要幾秒鐘,所以我已經添加表明PrintStatement是裝載口罩頁面。

的ASP方法被定義爲:

public FileResult PrintStatementOfAccount(long clientId) { ... } 

所有的偉大工程,但我想禁用等待面膜一旦文件的回報。關於如何實現這一點的任何想法?

回答

1

您可以將令牌傳遞給該方法並在javascript中檢查該令牌。

var token = new Date().getTime(); 
$('#download_token_valueid').val(token); 
$.download(path + "Print.ashx", 'Id=' + id + "&token=" + token);  

fileDownloadCheckTimer = window.setInterval(function() { 
     var cookieValue = $.cookie('fileDownloadToken'); 
     if (cookieValue == token) 
      finishDownload(); 
    }, 1000); 

function finishDownload() { 
    window.clearInterval(fileDownloadCheckTimer); 
    $.cookie('fileDownloadToken', null); //clears the cookie value 
    $.unblockUI(); 
} 
+0

感謝您的建議DOTNET,我寧願避免輪詢的狀態,雖然,希望有另一種方式...... –

1

從JavaScript無法知道文件是否返回給瀏覽器。

作爲一種解決辦法,而不是返回文件直接拆分過程:

  1. 文件可供下載:有莫明標識文件中的參數重新加載相同的頁面。
  2. 重新加載時,您可以讀取該參數並將其保存爲javascript值。在這裏你可以隱藏等待面具。
  3. 在頁面中,您檢查javascript文件標識符是否爲空,如果不是,則使用javascript window.location ='url_to_get_file'向服務器發送GET請求。
+0

感謝瓦西里,好建議,我得試試! –