日期:2014-05-16  浏览次数:20469 次

Prototype.js使用问题,控件中有个__VIEWSTATE就不能应用AJAX了
很简单的一段代码,就是不能提交,
如果我把__VIEWSTATE控件删除,或者把="__VIEWSTATE控件的value删除,代码就正常运行到alert(1):
请问原因是什么?怎么能让它正常运行

说明:__VIEWSTATE是asp.net自动生成的,所以不可能删除:

HTML code

<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>无标题页</title>
    <script type="text/javascript" src="prototype.js"></script>
    <script type="text/javascript">
        function login() {
          new Ajax.Request( 'p2.aspx',
          {
            method: 'post',
            postBody: $('logform').serialize(),
            onSuccess: function( transport ) {
                alert(1);
            }
          } );
        }
    </script>
</head>
<body>
    <form id="logform">
    <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJNzgzNDMwNTMzZGRs+GwJVuBVm9dJahyu9YPtnVNZBw==" />
     <input type="button" onclick="login()" value="Login" />
    </form>
</body>
</html>



------解决方案--------------------
__VIEWSTATE是asp.net用来保持视图状态的一个隐藏字段。你可禁用一下页面的视图看看。
------解决方案--------------------
有没有VIEWSTATE有影响吗?
不管怎么生成都是html
------解决方案--------------------
你写一个文件测试就明白了.

C# code

<%@ 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>

------解决方案--------------------
我测试没有问题.

C# code

<%@ 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>