一个asp.net 的页面, 其中点击树节点会调用JQUERY的$.post 异步操作方法,并且在旁边显示查询的结果数据列表。
问题是每次调用这个异步操作方法的同时, 还会重新执行下asp.net后台页的page_load 事件,加了if (!IsPostBack)还是会执行。
这样每次调用异步操作都会再执行一次后台代码,这样的话就会出现效率问题,请问园子里面的大侠们,这是什么情况?如何解决咧 ?本人对JQuery 异步页面的机制不是太熟悉,所以求教。
//异步获取数据
$.post("jsErp.asmx",
{ pid: PID, fclasstype: ItemID, wsql: WhereSql, recount: Recount},
function (text) { $("#GridView1").html(text); });
//页面后台执行
if(!IsPostBack)
{
Response.Write("这个里面本来是第一次加载执行的, 可是现在每执行一次异步操作都会执行一次。求解???");
}
你的树应该是服务器控件吧,服务器控件每次点击肯定会刷新的
对。仔细看看msdn关于treeview控件的描叙
你把问题化简一下,例如只在后台取一个字符串,你试试效果。
先别绑定到gridview上。
我怀疑是你的gridview有问题,是服务器控件吗?
不应该啊,你确定不是其他的调用让后台页面刷新的吗?
刚又看了下, 点击treeview上的节点时不会刷新的。就首次加载时, 在后台调用这个异步操作时会刷新
ClientScript.RegisterClientScriptBlock(this.GetType(), "initJS1", "<script> $(document).ready(function () {LoadTableData(" + Q + "," + FClassType + "," + FClassType + ",'" + url + "',50);});</script>");
一般通过ajax获取后台的信息,后台页面没有修改,会获取浏览器中该页面以前的缓存,
修改的话会后台页面会再次执行
一般把该页面的输出放在服务器中的cache中,让浏览器读取服务器中的缓存
把ajax请求的页面和当前的页面分开,就添加一张空的aspx页面专门做ajax请求处理就不会影响
这个已经分开了, 我专门建立 了一个页面
jsErp.asmx
处理ajx请求的.
就第一次自动加载异步方法时会调用两次方法
把后台程序放在一般处理页中解决
程序页面套用了母板页,调用了自定义控件,每次页面正常加载时都会执行两次page_load 事件,加 IsPostBack也会。页面的AutoEventWireup设置成flase就不会执行。可能是自定义控件问题,目前暂未找到解决方案。
刚又看了下, 点击treeview上的节点时不会刷新的。就首次加载时, 在后台调用这个异步操作时会刷新
ClientScript.RegisterClientScriptBlock(this.GetType(), "initJS1", "<script> $(document).ready(function () {LoadTableData(" + Q + "," + FClassType + "," + FClassType + ",'" + url + "',50);});</script>");