我有一个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