2013-04-29 80 views
0

我的瀏覽器向服務器發出ajax/json請求,然後服務器調用多個服務來獲取數據(需要不同的時間長度),然後在瀏覽器中顯示此數據。在完成之前從塊中讀取ajax請求的響應

我可以等待服務器完成並返回所有數據。

理想情況下,我希望它在每次單獨調用完成時都返回數據(json)。這樣我可以在用戶界面中顯示它們,如果其中一個服務調用需要很長時間,那麼用戶仍然可以查看數據,而無需查看空白屏幕。

我認爲它有可能得到一個ASP.NET網頁或處理程序發送數據而不緩衝它的請求客戶端。

但客戶端,我怎樣才能處理Ajax響應之前完成?這甚至有可能嗎?

我想知道多部分MIME數據類型是否也可能有用......?

+1

你如何將它們分解成單獨的請求? – epascarello 2013-04-29 17:20:39

+0

我最初是這樣工作的,但擔心瀏覽器和服務器的影響。有一個電話而不是5個,說5個Ajax在瀏覽器上等待。並且還說服務器上的每個用戶有5個請求,而不是一個。我認爲瀏覽器對最大併發ajax請求數量有限制,但我可能是錯的。 – 2013-04-29 17:31:46

+1

這不是對Ajax請求的限制,而是對http連接數量的限制。是的,是有限制的,但是你不能把它分解,所以需要很長時間的過程是在自己的要求中?您也可以將其更改爲輪詢類型的界面。提出請求並讓它返回當時的內容。在新的瀏覽器上也有WebSockets。 – epascarello 2013-04-29 17:39:00

回答

0

製作一個單獨的控制器/功能(取決於您使用的後端),然後在您的javascript中分別提出請求。由於Javascript是異步的,當每個函數完成時,結果將顯示在頁面上。

.NET僞

public string Foo() { 
    string returnedJson = getFoo(); 
    return returnedJson; 
} 
//Same thing for Bar and Bah 

然後,在你的JavaScript(假設你使用jQuery)

function onFooComplete() { 
    //In this function, display the data you get back from the server 
} 

$.get('/foo', function(res) { 
    onFooComplete(res); 
}); 

對於一個更強大的植入,考慮使用發佈/訂閱的方法JavaScript的。 https://github.com/cowboy/jquery-tiny-pubsub是一個非常小但很實用的jQuery的pub/sub實現。

+0

是的,這幾乎是我目前所擁有的,但使用jquery .done和.fail方法來包裝多個調用。我希望將它們合併成一個請求。 – 2013-04-29 17:57:16

相關問題