现在的位置: 首页 > 综合 > 正文

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

2013年09月21日 ⁄ 综合 ⁄ 共 3184字 ⁄ 字号 评论关闭

以下纯属个人理解!!!

 

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

抱歉!评论已关闭.