您的位置:首页 > 其它

现在刚刚看一些关于Ajax的一些知识点。把它写下来,作为知识的备忘录!

2010-03-12 15:17 399 查看
以下纯属个人理解!!!

1. Ajax分为页面部分(前端),和后台处理部分(后端,servlet);

2. 页面:创建XmlHttpRequest对象,不同的浏览器,所支持的XmlHttpRequest对象不通;

页面:建立发送函数 XmlHttpRequest.open("GET", url, true);
XmlHttpRequest.onreadystatechange = processResponse;
XmlHttpRequest.send(null); //XmlHttpRequest.send("uname=" + "lc")

在open函数,第一个参数:代表请求的方法,有两种,一种是get,令一种是post

第二个参数:提交给哪个网页或者servlet

第三个参数:true表示异步

在send函数:表示提交给servlet的参数。可以是简单的键值对参数,也可以是整个XML文档

用get方法提交时,参数是跟在url或login.do?uname=lc后面;

用post方法提交时,可以提交复杂的数据,比如,XML文档,

但用post提交时需要跟上,XmlHttpRequest.setRequestHeader("Content-Type","application/x-www-form- urlencoded");

3. 页面:创建回调函数,processResponse(),用来处理具体从servlet返回的数据

if(xmlHttpReq.readyState == 4) {
if(xmlHttpReq.status == 200) {
var res = xmlHttpReq.responseText;
window.alert(res);
} else {
window.alert("您所请求的页面有异常!");
}
}

4. 页面:返回的数据可以是纯文本:XmlHttpRequest.responseText;

也可以是XML文档:XmlHttpRequest.responseXML;

5. 页面:把返回的数据显示到html/jsp页面中,通过document.all.a00.innerHTML();

或者直接操作dom对象,在html/jsp中增加节点

6. 后台:前台用get + 简单的参数 。后台处理方式

String uname = req.getParameter("uname");
PrintWriter out = resp.getWriter();
out.println("<response>");

if("lc".equals(uname) && "lc".equals(password)) {
out.println("<res>热烈欢迎您!</res>");
} else {
out.println("<res>对不起,登入失败!</res>");
}

out.println("</response>");
out.close();

说明:返回前台的可是是纯文本,也可以是xml文档,此处为XML文档

7. 后台:前台用post + xml参数 。 后台处理方式

StringBuilder bxml = new StringBuilder();
String line = null;
try{
BufferedReader reader = req.getReader();
while((line = reader.readLine()) != null) {
bxml.append(line);
}
}catch(Exception e) {
e.printStackTrace();
}

String xml = bxml.toString();
xml = URLDecoder.decode(xml,"utf8");//提交时乱码,这是解决
Document xmlDoc = null;
try{
xmlDoc = DocumentBuilderFactory.newInstance().newDocumentBuilder()
.parse(new ByteArrayInputStream(xml.getBytes()));
}catch(Exception e) {
e.printStackTrace();
}

String name = xmlDoc.getElementsByTagName("name").item(0).getFirstChild().getNodeValue();

String responseText = "";
PrintWriter out = resp.getWriter();
if("lc".equals(name) && "lc".equals(psw)) {
responseText = "热烈欢迎您!";
} else {
responseText = "对不起,登入失败!";
}

//设置输出信息的格式及字符集
resp.setCharacterEncoding("utf-8");
resp.setHeader("charset","utf-8");
resp.setContentType("text/xml;charset=utf-8");
out.write(responseText);
out.close();

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/aaabendan/archive/2010/02/23/5319596.aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: