问题描述
请问高手们:小弟在开发网页时,如带ajax功能的级联菜单问题,当一个菜单内容比较多要加载时,菜单控件和页面都会像死了一样,ajax应该是异步加载数据的啊,怎么会像是同步加载数据一样,非要等内容全部加载完毕后页面才能动,不知道是什么原因,哪位知道,不胜感谢!
解决方案
解决方案二:
将脚本show出来看看
解决方案三:
前台的:<%@Pagelanguage="c#"Inherits="AjaxTest.main"CodeFile="main.aspx.cs"%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN"><HTML><HEAD><title>AjaxTest</title><metaname="GENERATOR"Content="MicrosoftVisualStudio.NET7.1"><metaname="CODE_LANGUAGE"Content="C#"><metaname="vs_defaultClientScript"content="JavaScript"><metaname="vs_targetSchema"content="http://schemas.microsoft.com/intellisense/ie5"><scripttype="text/javascript"language="javascript">/*取得数据主函数*/functiongetData(){varresponse=null;if(typeof(AjaxTest.main)=="undefined"){alert("未定义异步对象!");returnfalse;}else{FrezeOrUnFrezePage(true);AjaxTest.main.DataTableReturn(getDataTable_Callback);FrezeOrUnFrezePage(false);}}//填充数据functiongetDataTable_Callback(response){varobjDrpTwo=document.getElementById("drpTwo");ClearOptions(objDrpTwo);if(response.error!=null){alert(response.error);}if(response!=null&&response.value!=null){varindex=0;varlength=0;varobjTable=response.value;length=objTable.Rows.length;varnewOption=null;varvalue=null;vartext=null;for(index=0;index<length;index++){value=objTable.Rows[index].a;text=objTable.Rows[index].b;varnewOption=newOption(text,value);objDrpTwo.options.add(newOption);}}}//清楚数据functionClearOptions(objDrpTwo){varindex=0;varlength=0;length=objDrpTwo.options.length;for(index=0;index<length;index++){objDrpTwo.options.remove(0);}}//functionFrezeOrUnFrezePage(flag){varindex=0;varlength=0;length=document.all.length;for(index=0;index<length;index++){document.all[index].disabled=flag;}}</script></HEAD><bodyid="objBody"><formid="Form1"method="post"runat="server"><asp:DropDownListid="drpOne"runat="server"><asp:ListItemValue="1">Item1</asp:ListItem><asp:ListItemValue="2">Item2</asp:ListItem><asp:ListItemValue="3">Item3</asp:ListItem></asp:DropDownList><asp:DropDownListid="drpTwo"runat="server"></asp:DropDownList><INPUTtype="button"value="后台取得数据"onclick="javascript:getData()"id="btnCGetDate"><INPUTid="btnCFrezePage"type="button"value="页面冻结"onclick="javascript:FrezeOrUnFrezePage(true);"><INPUTid="btnCUnFrezePage"type="button"value="页面解冻"onclick="javascript:FrezeOrUnFrezePage(false);"></form></body></HTML>
后台的:usingSystem;usingSystem.Collections;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Web;usingSystem.Web.SessionState;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;usingSystem.Web.UI.HtmlControls;////usingAjax;namespaceAjaxTest{///<summary>///Summarydescriptionformain.///</summary>publicpartialclassmain:System.Web.UI.Page{protectedvoidPage_Load(objectsender,System.EventArgse){//Putusercodetoinitializethepagehereif(!Page.IsPostBack){AjaxPro.Utility.RegisterTypeForAjax(typeof(main));this.drpOne.Attributes.Add("onchange","javascript:returngetData();");this.drpOne.Attributes.Add("onclick","javascript:returngetData();");this.drpOne.Attributes.Add("change","javascript:returngetData();");this.drpOne.Attributes.Add("click","javascript:returngetData();");}}#regionWebFormDesignergeneratedcodeoverrideprotectedvoidOnInit(EventArgse){////CODEGEN:ThiscallisrequiredbytheASP.NETWebFormDesigner.//InitializeComponent();base.OnInit(e);}///<summary>///RequiredmethodforDesignersupport-donotmodify///thecontentsofthismethodwiththecodeeditor.///</summary>privatevoidInitializeComponent(){}#endregion///<summary>///测试是否真的是异步的///</summary>///<returns></returns>[AjaxPro.AjaxMethod()]publicSystem.Data.DataTableDataTableReturn(){System.Data.DataTabledt=newSystem.Data.DataTable();dt.Columns.Add("a");dt.Columns.Add("b");intindex=0;intlen=1000;for(index=0;index<len;index++){System.Data.DataRowdr=dt.NewRow();dr["a"]=index;dr["b"]=System.DateTime.Now.ToString();dt.Rows.Add(dr);}returndt;}}}
解决方案四:
我用的JSON的Ajax控件
解决方案五:
不要神化异步调用,它也是依靠网络速度,同时也会受数据量影响的,这些不管哪种机制都不能解决,需要人为优化,或通过语句或建立索引....
解决方案六:
通常会用一个div来显示一个正在加载的图片告诉用户数据正在加载中
解决方案七:
AjaxPro.Utility.RegisterTypeForAjax(typeof(main));这个东西你应该写在ispostback外面我使用ajaxpro也会遇到这样的问题。我目前感觉认为是js代码的问题,
解决方案八:
遇到过,没解决.up
解决方案九:
看来是有待高人解决了!如果能像多线程那样处理就好了!
解决方案十:
效率问题只能靠SQL优化。毕竟也是从数据库中取得数据。数据量多当然会显示很慢的!