我有一個ASP.net應用程序,其中包含由各種面板組成的儀表板界面。每個面板包含一個HighChart控件,並從不同的數據源加載。某些數據源可能需要一些時間才能執行,因此我不希望由於加載數據源緩慢而導致整體頁面執行速度變慢。在ASP.NET應用程序中使用jQuery異步加載面板
我希望加載頁面,然後在數據準備就緒時顯示每個面板。
由於我使用的是高圖表,顯示我有類似jQuery代碼數據:
$(document).ready(function() {
var panelIDList = dashID.Get("panelList");
for (var i = 0; i < panelIDList.length; i++) {
addpanel(panelIDList[i]);
}
});
function addpanel(panelID)
{
$.ajax({
type: "POST",
url: "Data.aspx/GetData",
data: "{val:'" + panelID + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
var myObject = eval('(' + msg.d + ')');
var options = {
chart: {
renderTo: myObject.renderTo,
type: myObject.chartVal,
height: 300,
width: 600
},
xAxis: {
categories: myObject.xaxis.Categories,
},
series: myObject.serList
};
var chart = new Highcharts.Chart(options);
}
});
如可以在$(文件)。就緒我做一個AJAX調用回服務器待觀察檢索用於構建圖表數據的JSON數據結構。
這一切都工作正常,但調用似乎不是真正的異步,如果第一個面板加載緩慢,然後後面板不加載,直到加載緩慢的第一個面板後。爲了演示我在面板DataSource中添加了一個Thread.Sleep。
雖然這是我使用Ajax調用時的情況。
不幸的是我有我的網頁上啓用的會議是非常重要的,以我的應用程序。將async設置爲true並緩存爲false並不能解決我的問題。 – keitn 2012-07-25 09:28:40
那麼可能你應該考慮將你的PageMethods移動到服務:http://stackoverflow.com/q/11250109/1268570,我剛剛測試了上一個鏈接中提供的解決方案,並且它工作,即使在頁面上啓用了Session – Jupaol 2012-07-25 09:41:56
我遇到的問題是我使用的會話信息相當多,當用戶登錄時會爲該用戶存儲相當多的信息,他們在我的應用程序中所做的更改也會存儲在會話中。這可能是因爲我需要重組我的呼叫以傳遞所有相關信息作爲WS呼叫 – keitn 2012-07-25 09:56:17