![](/img/trans.png)
[英]Execute javascript function after asp.net postback without Ajax
[英]ASP.NET: can't execute AJAX call to the same program while doing (a long) postback
我的程序執行了很長的回發,並且在屏幕上顯示了一些“正在運行”的消息。 現在,我想用AJAX並行查詢以更新該狀態(例如“ 20%完成...”)。
但是事實證明,在回發期間,沒有對任何Web方法的並行調用被執行,這些被延遲。 因此,Javascript會進行這些調用(不是那么定期),但是在整個PostBack結束之前它們不會收到答復(這使更新進度狀態的整個嘗試不可用)。
有沒有辦法對IIS / ASP.NET應用程序進行並行查詢?
我將ASP.NET 4.0和Visual Studio 2010與開發服務器組件一起使用
提前致謝!
您可以看看使用SignalR進行這種操作。 請訪問http://www.signalr.net了解更多信息。
這將使您開始一個漫長的過程,然后將該操作的進度發送回客戶端。
斯科特·漢塞爾曼(Scott Hanselman)在他的博客上提供了一個有效的示例,說明了如何進行此類操作。 看到這里http://www.hanselman.com/blog/SolvingTheShakespeareMillionMonkeysProblemInRealtimeWithParallelismAndSignalR.aspx
請注意,盡管他的博客文章使用的是SignalR的舊版本,所以該代碼將需要進行一些API更改才能與最新版本一起使用。
我也很感興趣,找到了下一個解釋:
您不能在回發期間進行AJAX調用,這是因為在回發期間,客戶端中的頁面已被破壞(包括AJAX調用的回調函數),控制權將移交給服務器,以獲取客戶端的新內容。返回到客戶端的一切都在那里重建,而我假設這是在進行AJAX調用時。
另一種選擇是使用AJAX調用而不是回發來啟動該過程。 因此,第一個調用將在服務器上的另一個線程上啟動該過程。 以下調用將僅使用處理線程與某種共享變量一起檢查進度。 該過程完成后,您可以進行回發以刷新頁面上的數據(如果需要)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.