Prototype.js使用问题,控件中有个__VIEWSTATE就不能应用AJAX了 __VIEWSTATE是asp.net用来保持视图状态的一个隐藏字段。你可禁用一下页面的视图看看。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 禁用视图也会产生这个字段,只有把Form的runat=server去掉,才会不产生这个字段但是我又不能去掉runat=server难道asp.net与prototype不能共用吗? 有没有VIEWSTATE有影响吗?不管怎么生成都是html 对,我也是这么认为,但是问题是,有了VIEWSTATE,我的代码就运行不了没有,就可以运行。 你写一个文件测试就明白了.<%@ Page Language="C#" %><script type="text/javascript" src="prototype.js"></script><script type="text/javascript"> function test(){ new Ajax.Request( 'p2.aspx', { method: 'post', postBody: $('logform').serialize(), onSuccess: function( transport ) { alert(1); } }); return false; }</script><form id="Form1" runat="server"> <input id="bt001" type="button" value="Click" onclick="test();" /></form> 我的代码就是上面这样的,我把form的runat=server删除,代码就正常工作,能alert(1)加上runat=server,就不能工作所以我才用我问题中的代码测试,发现是Viewstate的问题。请试试我那段代码就可以看到结果。 我测试没有问题.<%@ Page Language="C#" %><script type="text/javascript" src="prototype-1.6.0.2.js"></script><script type="text/javascript"> function test(){ new Ajax.Request('p2.aspx', { method:'post', postBody:'test1=1&test2=2', onSuccess:function(transport){ alert('test'); } }); return false; }</script><form id="Form1" runat="server"> <input id="bt001" type="button" value="test" onclick="test();" /></form> 加上Ajax的onFailure: function(){ document.write(arguments[0].responseText);},终于发现了原因,问题在postBody: $('logform').serialize(),这一句这句话把__VIEWSTATE编码进去了,然后传递到p2.aspx页面时,导致了这个错误:验证视图状态 MAC 失败所以始终不能正确弹出信息解决办法,不使用serialize,自己组装参数或者,在p2页面的Page里加上 enableEventValidation="false" enableViewStateMac="false"不管怎么样,谢谢大家了。 两个<script>标签在同一index.aspx里冲突,哪位高手帮忙解决一下,非常感谢! 如何用extjs实现像QQ邮箱那样的附件上传方式 一个非常简单的正则 jquery 中传递参数 请教时间的正则表达式 关于<button>标签和<a>标签在IE和firefox的value属性不一样的问题,求助~~ 怎么样用鼠标点击图片,取得鼠标在图片的位置 谁能给我关于 “如何获取parent窗口中表单控件的id” 给我一点帮助 大家帮我看这段代码是什么意思,没看懂 问一个js关于变量作用域的问题,求助! 求漂浮窗口(内嵌html页)? 不同的域名显示不同的内容(高分)
不管怎么生成都是html
没有,就可以运行。
<%@ Page Language="C#" %><script type="text/javascript" src="prototype.js"></script>
<script type="text/javascript">
function test(){
new Ajax.Request( 'p2.aspx',
{
method: 'post',
postBody: $('logform').serialize(),
onSuccess: function( transport ) {
alert(1);
}
});
return false;
}
</script>
<form id="Form1" runat="server">
<input id="bt001" type="button" value="Click" onclick="test();" />
</form>
加上runat=server,就不能工作所以我才用我问题中的代码测试,发现是Viewstate的问题。请试试我那段代码就可以看到结果。
<%@ Page Language="C#" %>
<script type="text/javascript" src="prototype-1.6.0.2.js"></script>
<script type="text/javascript">
function test(){
new Ajax.Request('p2.aspx', {
method:'post',
postBody:'test1=1&test2=2',
onSuccess:function(transport){
alert('test');
}
});
return false;
}
</script>
<form id="Form1" runat="server">
<input id="bt001" type="button" value="test" onclick="test();" />
</form>
document.write(arguments[0].responseText);
},
终于发现了原因,问题在postBody: $('logform').serialize(),这一句
这句话把__VIEWSTATE编码进去了,然后传递到p2.aspx页面时,导致了这个错误:验证视图状态 MAC 失败所以始终不能正确弹出信息解决办法,不使用serialize,自己组装参数
或者,在p2页面的Page里加上 enableEventValidation="false" enableViewStateMac="false"不管怎么样,谢谢大家了。