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>