"此页的状态信息无效,可能已损坏"的原因和解决方法

当页面A.aspx使用Ajax调用B.aspx中的数据时,在页面A中有服务器端控件,需要与服务器端交互,完成某些功能,这时候在单击服务器控件准备与服务器端进行交互时,就会出现错误信息:“此页的状态信息无效,可能已损坏”
而且进入不了后台代码。
产生的原因:
WebForm_InitCallback(); 的作用就是加载网页的状态post数据,而往__theFormPostData加载的方式是以在现有post字符后追加的方式添加的具体看源代码:
function WebForm_InitCallbackAddField(name, value)
{
var nameValue = new Object();
nameValue.name = name;
nameValue.value = value;
__theFormPostCollection[__theFormPostCollection.length] = nameValue;
__theFormPostData += name + "=" + WebForm_EncodeCallback(value) + "&";}
那么
WebForm_InitCallback(); 前必须加
__theFormPostData = "";
__theFormPostCollection = new Array();
是因为在网页在浏览器加载后发生了WebForm_InitCallback();调用,为__theFormPostData ,__theFormPostCollection填充了当前页初始状态的post数据,如果你在回调前不加这两句的话 __theFormPostData就会在原来的基础上再添加现有的网页状态post数据,这样可以说现在回调时你已包含了两份post数据,但回调时,服务器方仍然把它当作一份看待,结果服务器分析不出post数据,只给你返回了一个网页状态已损坏的消息

解决方法:
去掉b页面里的form即可。

posted on 2009-09-21 17:45  上午的绝缘杯  阅读(3370)  评论(0编辑  收藏  举报