Ajax当中给出一个helloWorld例子

1.helloWorld
马克- to-win:马克 java社区:防盗版实名手机尾号: 73203。
例 1.1(testIEFF.htm)





<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>helloworld</title>
<script type="text/javascript">
var xmlHttp;
function createXMLHttpRequest(){
    if(window.ActiveXObject){//ie
        alert("we are using microsoft ActiveXObject");
        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    else if(window.XMLHttpRequest){
        xmlHttp = new XMLHttpRequest();
    }
}

function startRequest(){

    createXMLHttpRequest();
/*
马克-to-win:onreadystatechange: 指定当readyState属性改变时的事件处理句柄

  每当XMLHttpRequest状态改变时,onreadystatechange事件就触发,
actually, the next statement won't be immidiately executed, it just determine that when the status
changes, it will run handleStateChange.
  */
    xmlHttp.onreadystatechange = handleStateChange;
/* open()的第一个参数是HTTP请求方式 GET, POST, HEAD 或任何服务器所支持的您想调用的方式.
马克-to-win: it will go to the same webmodule to get "servlet", or
you can xmlHttp.open('GET', 'http://www.example.org/some.file', true);
第二个参数是请求页面的URL. 第三个参数设置请求是否为异步模式.如果是TRUE, JavaScript函数将继续执行,而不等待服务器响应.
这就是"AJAX"中的"A".
*/
/*下面两句都可以工作,但1.txt处理不了中文,下面参数q不能为中文    */
    xmlHttp.open("GET","servlet11?q=mark",true);
// xmlHttp.open("GET","1.txt",true);
/*如果第一个参数是"POST",send()方法的参数可以是任何想送给服务器的数据. 这时数据要以字符串的形式
送给服务器,如下所示: name=value&anothername=othervalue&so=on
*/
    xmlHttp.send(null);
}
function handleStateChange(){
/*
马克-to-win:readyState: 返回XMLHTTP请求的当前状态
变量,此属性只读,状态用长度为4的整型表示.定义如下:

0 (未初始化) 对象已建立,但是尚未初始化(尚未调用open方法)
1 (初始化) 对象已建立,尚未调用send方法
2 (发送数据) send方法已调用,但是当前的状态及http头未知
3 (数据传送中) 已接收部分数据,因为响应及http头不全,这时通过responseBody和responseText获取部分数据会出现错误,
4 (完成) 数据接收完毕,此时可以通过通responseText获取完整的回应数据
*/
    if(xmlHttp.readyState == 4){
/*
status: 长整形标准http状态码,此属性仅当数据发送并接收完毕后才可获取。定义如下: Number  Description
500 Internal Server Error
200 OK
404 Not Found
504 Gateway Timeout
*/
        if(xmlHttp.status == 200){//成功得到请求内容
            var tex=xmlHttp.responseText;
            alert(tex);
            document.getElementById("results").innerHTML = tex;
        }
    }
}
</script>
</head>
<body>
<form>
    <input type="button" value="Start info Request" onClick="startRequest();" />
</form>
<hr>
以下是请求内容:
<div id="results"></div>
</body>
</html>

servlet11.java



package helloWorld;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import java.io.IOException;
import java.io.PrintWriter;


public class servlet11 extends HttpServlet {
    private static final String CONTENT_TYPE = "text/html; charset=GBK";

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
              response.setContentType(CONTENT_TYPE);
        String s=null;
        PrintWriter out = response.getWriter();
   if(request.getParameter("q")!=null)
       {
           s=request.getParameter("q");
       }
        out.println("<p>这是马克-to-win 的一个测试用例, 中文能回显<br>,因为xmlHttp用的是xmlHttp.responseText<br>"
                    +s+"接受信息,所以response.setContentType(\"text/html; charset=GBK\");"+"\nbcd\ncde"
                    );

        out.close();
    }
}




例 1.2(test1IEFF.htm)

1.txt
this is a test, can not be chinese,only can be pure data
例 1.2(test3_5XMLFF&IE.htm)

<html>
<body>
    <table width="95%" border="4" align="center">
        <tr>
            <td>标题</td>
            <td>作者</td>
        </tr>
        <tbody id="display">
        </tbody>
    </table>
</body>
</html>
<script type="text/javascript">
    function makeRequest(url) {
        if (window.ActiveXObject) {
            http_request = new ActiveXObject("Microsoft.XMLHTTP");
        } else if (window.XMLHttpRequest) {
            http_request = new XMLHttpRequest();
        }
        http_request.onreadystatechange = alertContents;
        http_request.open('GET', url, true);
        http_request.send(null);
    }
    function alertContents() {
        if (http_request.readyState == 4) {
            if (http_request.status == 200) {
                var xmldoc = http_request.responseXML;
*注意下面这句话中是区分大小写的*/              
                var root_node = xmldoc.getElementsByTagName('BOOKS').item(0);
                var root = xmldoc.documentElement;
                alert("root.tagName is "+root.tagName+"root_node.tagName is "+root_node.tagName);

                var tChil=root.children;
                alert(tChil.length+"tChil[1].tagName is "+tChil[1].tagName);
                var tChilChil=tChil[1].children;
                alert(tChilChil[1].firstChild.nodeValue);
                var aContent = xmldoc.getElementsByTagName("COMPUTERBOOK");
                for ( var i = 0; i < aContent.length; i++) {
/*马克-to-win:既然没有getSingleElementByTagName,我们就用getElementsByTagName()[0],
xmldoc.getElementsByTagName("TITLE")[0].firstChild.nodeValue
这种方法虽然略显得笨拙,但是他能够达到兼容的效果。
*/
                    var data = [ xmldoc.getElementsByTagName("TITLE")[i].firstChild.nodeValue,xmldoc.getElementsByTagName("ARTIST")[i].firstChild.nodeValue];
                    var newRow = createRow(data);
                    var displayTable = document.getElementById("display");
                    displayTable.appendChild(newRow)
                }

            } else {
                alert('There was a problem with the request.');
            }
        }

    }

    root = makeRequest("book.xml");

    function createRow(data) {
        var row, cell, txtNode;
        row = document.createElement("tr");
        for ( var i = 0; i < data.length; i++) {
            cell = document.createElement("td");
/*the following two statements's function is the same as the third statement. we can use either way to achieve goal.*/
            //    txtNode = document.createTextNode(data[i]);
            //    cell.appendChild(txtNode);
            cell.innerHTML = data[i];
            row.appendChild(cell);
        }
        return row;
    }
</script>



book.xml



<?xml version="1.0" ?>
<BOOKS>
    <COMPUTERBOOK>
        <TITLE>java</TITLE>
        <ARTIST>马克-to-win:</ARTIST>
    </COMPUTERBOOK>
    <COMPUTERBOOK>
        <TITLE>javascript</TITLE>
        <ARTIST>马克-to-win:开</ARTIST>
    </COMPUTERBOOK>
</BOOKS>