zoukankan      html  css  js  c++  java
  • 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>

                  

  • 相关阅读:
    Qt笔记之 信号和槽
    Qt笔记之 坐标系
    Qt笔记之 QPushButton
    点双连通
    bzoj 2179 FFT快速傅立叶
    bzoj 4128 矩阵求逆
    bzoj 3924 点分
    bzoj 1076 状态压缩最优期望
    bzoj 3143 随机游走
    bzoj 4084 双旋转字符串
  • 原文地址:https://www.cnblogs.com/jiangqiang/p/2800528.html
Copyright © 2011-2022 走看看