AJAX是技术的集合,就我个人看来,异步技术是其核心。AJAX是前端技术,提供与服务器异步通信的能力,主要应用于三层开发体系的表现层,能实现真正意义上的表现层与业务逻辑层相分离。我也是入行新手,今天写一简单的AJAX+ASP.NET+XML异步交互实例,希望可以帮到正迷惑于AJAX中的兄台们。若有什么错误的,请各位留言指出。
这个例子是在通过在网页表单中填入个人资料:名字和EMAIL,然后提交,异步进行数据写入XML。
1 实现流程图
1.1 AJAX提交数据引擎
主要是使用JS整合数据,通过DOM处理HTML进行布局。代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>AJAX+ASP.NET+XML异步交互实例</title>
<script type="text/javascript" language="javascript">
var xmlhttp;
function ajaxtest()
{
if(window.ActiveXObject)
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
else if(window.XMLHttpRequest)
xmlhttp=new XMLHttpRequest();
var data=getdata();
xmlhttp.onreadystatechange=doit;
xmlhttp.open("GET","manage.aspx?info="+data,true);
xmlhttp.send(null);
}
function doit()
{
document.getElementById("d1").innerHTML="正在提交数据";
if(xmlhttp.readystate==4&&xmlhttp.status==200)
document.getElementById("d1").innerHTML=xmlhttp.responsetext;
}
function getdata()
{
var dataStr=document.getElementById("name").value+",";
dataStr=dataStr+document.getElementById("email").value;
return dataStr;
}
</script>
</head>
<body>
<div>
姓名:<input type="text" id="name" />
EMAIL:<input type="text" id="email" />
<input type="button" value="提交" οnclick="ajaxtest()" />
数据处理状态:<div id="d1"></div>
</div></body>
</html>
1.2 获得客房端的数据并进行处理。
即WEB应用程序aspx。目的在于对从客房端返回的数据进行处理,将处理后的数据传入数据处理层。
public partial class manage: System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string info= Request.QueryString["info"];
string[] infoElem = info.Split(',');
xmlhandle testxml = new xmlhandle();
testxml.createNode(infoElem[0], infoElem[1]);
Response.Write("数据添加成功");
}
}
1.3 数据处理层
其实就是一个XML文件的操作类,在这个类,实现你所需要的功能。
using System;
using System.Xml;
public class xmlhandle
{
private string name;
private string email;
XmlDocument xmltest;
public xmlhandle()
{
}
private void readFile() //读取需要进行操作的XML文件
{
xmltest = new XmlDocument();
string thepath = System.Web.HttpContext.Current.Server.MapPath("App_Data//test.xml");
xmltest.Load(thepath);
}
public void createNode(string paramName, string paramEmail) //向XML文件添加节点函数
{
this.name = paramName;
this.email = paramEmail;
readFile();
XmlNode bootNode = xmltest.SelectSingleNode("information");
XmlElement userNode = xmltest.CreateElement("user");
XmlElement nameNode = xmltest.CreateElement("name");
nameNode.InnerText = name;
XmlElement emailNode = xmltest.CreateElement("email");
emailNode.InnerText = email;
userNode.AppendChild(nameNode);
userNode.AppendChild(emailNode);
bootNode.AppendChild(userNode);
xmltest.Save(System.Web.HttpContext.Current.Server.MapPath("App_Data//test.xml"));
}
}
1.4 数据层
即一个XML文件
<?xml version="1.0" encoding="utf-8"?>
<information>
<user>
<name></name>
<email></email>
</user>
</information>