Jquery Ajax +.ashx XML数据格式

          Jquery Ajax+.ashx +XML比较流行的Ajax解决方案。在这里简单介绍一下

              1.   .ashx文件

public void ProcessRequest(HttpContext context)
        {
            IISHandler ajax = new IISHandler();
            context.Response.ContentType = "text/xml";
            //接受Ajax传的值必须用context.request["xxxxx"]方式
            string anthora = context.Request["author"];
            string msga = context.Request["msg"];
            List<IISHandler.Message> messageList = new List<IISHandler.Message>();
            if (!string.IsNullOrEmpty(anthora) && !string.IsNullOrEmpty(msga))
            {
                //实例化对象,添加对象
                IISHandler.Message message = new IISHandler.Message() { id = Guid.NewGuid().ToString(), user =  anthora, text = msga, time = DateTime.Now.ToString() };
                messageList.Add(message);
                //把对象保存
                ajax.Save(messageList);

            }
            //返回最新十条记录
            context.Response.Write(ajax.GetMessages(10));
        }

           2.    保存

             

 public void Save(List<Message> messageList)
        {
            XDocument xdo = null;
            //文件是否存在
            if (!File.Exists(Server.MapPath("data.xml")))
            {
                //不存在新建
                xdo = new XDocument(
                    new XElement("Message", "")
                    );
                xdo.Save(AppDomain.CurrentDomain.BaseDirectory + "data.xml");
            }
            else
            {
                //存在加载
                xdo = XDocument.Load(Server.MapPath("data.xml"));
            }
            //循环添加到XMl中
            foreach (var message in messageList)
            {
                XElement Message = new XElement("Node"
                    , new XElement("ID", message.id)
                    , new XElement("User", message.user)
                    , new XElement("Msg", message.text)
                    , new XElement("Date", message.time)
                    );
                xdo.Element("Message").Add(Message);
            }
            //保存文件
            xdo.Save(Server.MapPath("data.xml"));
        }

 

            3. 返回记录方法

public string SelectXML(int Top)
        {
            XDocument xdo = null;
            List<XElement> xelnew = new List<XElement>();
            //数据文件是否存在
            if (File.Exists(Server.MapPath("data.xml")))
            {
                //加载数据文件
                XElement xel = XElement.Load(Server.MapPath("data.xml"));
                //Linq To XML 查询数据
                xelnew = (from element
                                  in xel.Elements()
                                  orderby element.Element("Date").Value
                                  descending
                                  select element).Take(Top).ToList();
                xdo = new XDocument(
                    new XElement("Message", ""));
                foreach (var item in xelnew)
                {
                    xdo.Element("Message").Add(item);
                }
                //保存查询文件
                xdo.Save(AppDomain.CurrentDomain.BaseDirectory + "Selectdata.xml");
            }
            //返回查询数据
            return XDocument.Load(Server.MapPath("Selectdata.xml")).ToString();
        }

               4. JS文件

                

 $(function () {
        $("#send").click(function () {
            $.ajax({
                type: "post",  //发送方式
                url: "Handler.ashx",//发送文件地址
                data: { author: $("#author").val(), msg: $("#msg").val() },   //参数
                datatype: "xml",   //返回数据格式
                success: function (data) {    //执行成功的执行方法
                    $("#messagewindow").empty(); //清空文件
                    //在data文件循环Node节点文件
                    $("Node", data).each(function () {
                        // $("User", this).text()  在Node节点里查询User 节点文本
                        var Msg = "User :" + $("User", this).text() + "<br/>Message:" + $("Msg", this).text() + "<br/>date:" + $("Date", this).text() + "<br/><br/>"
                        //将处理文件插入div中
                        $("#messagewindow").append(Msg);
                    });
                }
            });
        });
    });

                 5.在web.config 中配置.ashx文件

              

<system.web>
<httpHandlers >
      <!--<add verb="请求路径名称( 只有当请求Handler.ashx时才执行该文件)" path="请求方式(get/post)" type="类型(命名空间+.ashx文件名)">-->
      <add verb="Handler.ashx" path="*" type="WeAppJqueryChart.Handler" validate="true"/>
    </httpHandlers>
</system.web>

 

              

posted @ 2012-12-06 23:22  巴顿道儿  阅读(437)  评论(0编辑  收藏  举报