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>