2012-07-25 48 views
1

我有一個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調用時的情況。

回答

0

那麼一次我有一個類似的問題

首先嚐試添加

async: true, 
cache: false 

ajax通話

如果那麼你需要禁用的的Session不解決您的問題

<%@ Page EnableSessionState="False" .... 

對於mo重新資訊:

How to display the Asynchronous results which one is first in asp.netweb application?

REST WCF service locks thread when called using AJAX in an ASP.Net site

+0

不幸的是我有我的網頁上啓用的會議是非常重要的,以我的應用程序。將async設置爲true並緩存爲false並不能解決我的問題。 – keitn 2012-07-25 09:28:40

+0

那麼可能你應該考慮將你的PageMethods移動到服務:http://stackoverflow.com/q/11250109/1268570,我剛剛測試了上一個鏈接中提供的解決方案,並且它工作,即使在頁面上啓用了Session – Jupaol 2012-07-25 09:41:56

+0

我遇到的問題是我使用的會話信息相當多,當用戶登錄時會爲該用戶存儲相當多的信息,他們在我的應用程序中所做的更改也會存儲在會話中。這可能是因爲我需要重組我的呼叫以傳遞所有相關信息作爲WS呼叫 – keitn 2012-07-25 09:56:17

相關問題