使用Ajax技术获得服务端信息时的注意事项

    我现在的做法是服务端使用Rsponse.Write()方法来输出信息.客户端再使用xmlhttp.responseText或xmlhttp.responseXML来接收信息,我发现接收的信息老是附带一些html的信息,后来研究发现原来在服务端增加一句代码就可以去掉那些附加的html信息,测试代码如下:
客户端:

<head runat="server">    
    
<script language=javascript>
         
function getstr()
         {
             
var xmlhttp=new ActiveXObject("MSXML2.XMLHTTP");
             xmlhttp.open(
"POST","Default2.aspx",false);
             xmlhttp.send();
             alert(xmlhttp.responseText);             
         }
    
</script>
</head>
<body>
    
<form id="form1" runat="server">
        
<input type=button id=bitOk value="测试" onclick="getstr()">
    
</form>
</body>
服务端:
    protected void Page_Load(object sender, EventArgs e)
    {
        
if (!IsPostBack)
        {
            Response.Write(
"你好Ajax"); //如果像这样写的话就会在输出信息中增加一些html信息
        }

    }
附加了html信息的输出:

如果在服务端代码中增加一行Response.End(),就会去掉这些讨厌的html信息,Response.End()的作用是"将当前所有缓冲的输出发送到客户端,停止该页的执行,并引发EndRequest 事件",加了Response.End()后的输出结果如下:
另外一种方法:如果你这个页面中有很多函数都用到了Response.Write()来输出,你可以不必每个函数都写一句Response.End(),可以通过重载页面的Render方法来实现同样的效果:
    protected void Page_Load(object sender, EventArgs e)
    {
        
if (!IsPostBack)
        {
            Response.Write(
"你好Ajax");            
        }

    }
    
protected override void Render(HtmlTextWriter writer)
    {
        
//base.Render(writer); 注意这一句要屏蔽掉
    }

posted on 2006-03-22 09:48  DoNet鸟  阅读(377)  评论(0编辑  收藏  举报

导航