Ajax中的XML

一、从服务器端输出xml格式数据

<%@ WebHandler Language="C#" Class="GetUser" %>

using System;
using System.Web;
using System.Xml;
using System.Xml.Serialization;
using System.Text;
using BookShopBLL;
using BookShopModels;

public class GetUser : IHttpHandler {
    
    public void ProcessRequest (HttpContext context) {
        
        context.Response.ContentType = "text/xml";//xml类型

        if (context.Request.QueryString["loginId"]!=null)
        {
            //1.根据地址参数获取实体类
            Users user = UserManager.GetUserByLoginId(context.Request.QueryString["loginId"].ToString());

            if (user!=null)
            {
                XmlWriter writer = null;
                try
                {
                    //2.创建一个XMLSerializer对象
                    XmlSerializer serializer = new XmlSerializer(user.GetType());

                    //3.将XMLWriter对象赋值为XMLTextWriter对象
                    writer = new XmlTextWriter(context.Response.OutputStream, Encoding.UTF8);

                    //4.调用序列化方法
                    serializer.Serialize(writer, user);
                }
                finally
                {
                    if (writer!=null)
                    {
                        //5.关闭写入器
                        writer.Close();
                    }
                }
            }
        }
    }
 
    public bool IsReusable {
        get {
            return false;
        }
    }

}
生成的xml文件 结果如图:



二、使用XMLDocument

后置代码:

	if (!Page.IsPostBack)
        {
            if (Session["loginid"]!=null)
            {
                this.ltlUser.Text = string.Format("您好,"
                    +"<span οnmοuseοver='getUser(this.innerHTML)' "
                        //关闭closeUser()方法用来关闭显示的div
                        +"οnmοuseοut='closeUser()'>{0}</span>"
                        +"<a href='Menbership/UserExit.aspx'>【注销】</a>"
                        , Session["loginid"].ToString()                        
                    );
            }
       }

显示用户信息的html文档代码:

	<asp:Literal ID="ltlUser" runat="server" >
		<a href="UserLogin.aspx">【登录】</a><a href="Register.aspx">【免费注册】</a>
	</asp:Literal>
			 
	<div id="userinfo" style="display:none;">
		<p>
			<label>
				姓名:
			</label>
			<label id="Name">
			</label>
		</p>
		<p>
			<label>
				地址:
			</label>
			<label id="Address">
			</label>
		</p>
		<p>
			<label>
				电话:
			</label>
			<label id="Phone">
			</label>
		</p>
		<p>
			<label>
				Mail:
			</label>
			<label id="Mail">
			</label>
		</p>
	</div>

Css代码:

	<style type="text/css">
		#userinfo
		{
			position: absolute;
			padding: 5px 5px 5px 5px;
			left: 80px;
			top: 30px;
			background-color: #FAFAD2;
			display: block;
			width: 220px;
			height: 80px;
			color: #000;
			overflow: hidden;
			border: solid 1px #F7F7F7;
		}
	</style>

实现javascript函数完成用户信息显示

<script language ="javascript" type="text/javascript" >

    function closeUser() {
        document.getElementById("userinfo").style.display = "none";
    }

    function CreateXmlHttpRequest() {
        if (window.ActiveXObject) {//如果是IE浏览器
            return new ActiveXObject("Microsoft.XMLHTTP");
        }
        else if (window.XMLHttpRequest) {//非IE浏览器
            return new XMLHttpRequest();
        }
    }

    function getUser(loginId) {
        if (loginId != "") {
            var url = "ajaxHandler/GetUser.ashx?loginId=" + loginId;
            var xhr = CreateXmlHttpRequest();

            //设置回调函数
            xhr.onreadystatechange = function () {

                if (xhr.readyState == 4
                     && xhr.status == 200) {

                    document.getElementById("userinfo").style.display = "inline";

                    var dom = xhr.responseXML; //得到XMLDocument对象
                    
                    //获取节点数据
                    document.getElementById("Name").innerHTML = dom.getElementsByTagName("Name")[0].text;
                    document.getElementById("Address").innerHTML = dom.getElementsByTagName("Address")[0].text;
                    document.getElementById("Phone").innerHTML = dom.getElementsByTagName("Phone")[0].text;
                    document.getElementById("Mail").innerHTML = dom.getElementsByTagName("Mail")[0].text;
                }
            };
            xhr.open("GET", url, true);
            xhr.send(null);
       }
    }
</script>

以上效果只支持IE浏览器!!!结果如图:




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值