根據ajax發送數據,從servelt中讀取xml數據並顯示,實現查詢、刪除和分頁

根據ajax發送數據,從servelt中讀取xml數據並顯示,實現查詢、刪除和分頁

首先我們必須知道ajax發送的幾個步驟,我們以以下解析的爲例:當點擊查詢按鈕的時候要從數據庫中查詢出所有數據,並用xml讀取,在查詢的同時實現分頁,並且可以在右邊操作的時候可以實現刪除,通過刪除所選項和刪除全部選的,也就是批量刪除,下面我們來實現吧!

首先從數據庫中讀取,用ajax的方式來請求並用xml讀取顯示在jsp頁面,使用ajax要先創建xmlHttpRequest,爲:

//創建xmlHttpRequest對象

function createXMLHttpRequest() {

var xmlHttp;

try {

//在firefox opera等非瀏覽器中運行的

xmlHttp = new XMLHttpRequest();

} catch (ex) {

try {

//在IE中運行 運行的是第二個版本

xmlHttp = new ActiveXObject("MSXML2.XMLHTTP");

} catch (e) {

// 在IE中運行第一個版本

xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");

}

}

return xmlHttp;

}

所使用的html爲:(以下的都用此html)

<body>

<div align="center">

<h1>

員工信息

</h1>

<br />

<input type="button" value="查詢員工" id="btnEmp" />

<br />

<br />

<br />

<div id="list">

<table id="empList" border="1px">

<thead>

<tr>

<th>

序號

</th>

<th>

姓名

</th>

<th>

性別

</th>

<th>

年齡

</th>

<th>

出生日期

</th>

<th>

薪資

</th>

<th>

<input type="checkbox" id="chk" />

<input type="button" value="刪除所選項 " id="delBtn" />

</th>

</tr>

</thead>

<tbody id="emps"></tbody>

</table>

</div>

<div id="pages">

</div>

</div>

</body>

當點擊value爲查詢員工,id爲btnEmp時,觸發的事件,先創建xmlHttpRequest對象,並通過ajax來傳給 servlet的幾個步驟爲:

第一步:在jsp頁面開始創建xmlHttpRequest對象,並向servlet發送請求

Window.onload = function(){

//第一步:初始化xmlHttpRequest對象

var xmlHttp = createXMLHttpRequest();

//第二步:爲請求設置參數

xmlHttp.open("GET", "./delEmployeeServlet.do?ids=" + ids

+ "&timeStamp=" + new Date().getTime(), true);

//第三步:發送請求

xmlHttp.send(null);

}

第二步:查詢所有並響應到jsp頁面 EmployeeServlet

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

private EmployeeService employeeServlet = new EmployeeServiceImpl();

//設置編碼字符集

response.setCharacterEncoding("utf-8");

response.setContentType("text/xml;charset=utf-8");

List<Employee> entities = employeeServlet.findAll();

PrintWriter out = response.getWriter();

out.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");

out.println("<emps>");

for (int i = 0; i < entities.size(); i++) {

Employee entity = entities.get(i);

out.println("<emp id='" + entity.getId() + "'>");

out.println("<name>" + entity.getHrName() + "</name>");

out.println("<sex>" + entity.getHrSex() + "</sex>");

out.println("<age>" + entity.getHrAge() + "</age>");

out.println("<birth>" + entity.getHrBirth() + "</birth>");

out.println("<salary>" + entity.getHrSalary() + "</salary>");

out.println("</emp>");

}

out.println("</emps>");

out.flush();

out.close();

}

第三步:響應到jsp頁面

//得到向tBody裏面添加的節點

var empsHtmlNodes = document.getElementById("emps");

//獲取到按鈕的節點

var btnEmpNode = document.getElementById("btnEmp");

//當點擊按鈕的時候觸發的事件

btnEmpNode.onclick = function() {

//每次點擊的時候都會觸發,所以要清除,只剩一次點擊就可以了,此方法看第四步的上面

clearNodes(empsHtmlNodes);

//ajax迴應後的信息調用onreadystatechange這個屬性

xmlHttp.onreadystatechange = function() {

if (xmlHttp.readyState == 4) {

if (xmlHttp.status == 200) {

//獲取xmlDocuemnt

var xmlDoc = xmlHttp.responseXML;

//獲取xmlDoc中標籤爲emp的

var emps = xmlDoc.getElementsByTagName("emp");

//通過循環得到emp下的屬性

for ( var i = 0; i < emps.length; i++) {

var empsNode = emps[i];

//創建tr

var trNode = document.createElement("tr");

//創建td

var tdNode1 = document.createElement("td");

//把獲得的屬性發到td中 tdNode1.appendChild(document.createTextNode(emps[i]

.getAttribute("id")));

//把td放到tr中

trNode.appendChild(tdNode1);

//獲取emp下的子標籤的屬性

var empElemtNode = empsNode.childNodes;

//通過循環獲得文本併發到tr中

for ( var j = 0; j < empElemtNode.length; j++) {

if (empElemtNode[j].nodeType == 1) {

//創建動態增加的屬性的td

var tdNode2 = document.createElement("td");

//獲取元素節點下面的text value

var textValue = empElemtNode[j].firstChild.nodeValue;

//alert(textValue);

//把獲取到的值放到td2

tdNode2.appendChild(document

.createTextNode(textValue));

trNode.appendChild(tdNode2);

}

}

}

//調用分頁的實現

pagesNode(pagesHtmlNode, rootNode);

}

}

}

xmlHttp.open("GET", "./employeeServlet.do?timeStamp="

+ new Date().getTime(), true);

xmlHttp.send(null);

}

//清空節點的方法

function clearNodes(node) {

var lens = node.childNodes.length;

for ( var i = 0; i < lens; i++) {

node.removeChild(node.childNodes[0]);

}

}

第四步:實現分頁,首先寫一下分頁類 Page.java

package cn.csdn.hr.HibernateUtil;

import java.util.List;

public class Page {

// 封裝分頁信息

// 設置每頁顯示的記錄數

public static final Integer PAGESIZE = 3;

private Integer nowPage;// 當前頁

private Integer countPage;// /總頁數

private Integer countSize;// 總記錄數

private List datas;// 當前頁的信息

public Page() {

}

public Page(String className, Integer nowPage) {

this.nowPage = nowPage;

// 先獲取總記錄數

this.setCountSize(HibernateUtil.getSession().createQuery(

"from " + className).list().size());

// 總頁數

this.countPage = this.countSize % PAGESIZE == 0 ? this.countSize

/ PAGESIZE : this.countSize / PAGESIZE + 1;

// 獲取當前頁的信息

this.setDatas(HibernateUtil.getSession().createQuery(

"from " + className).setFirstResult(

(this.nowPage - 1) * Page.PAGESIZE).setMaxResults(PAGESIZE)

.list());

}

public Integer getNowPage() {

return nowPage;

}

public void setNowPage(Integer nowPage) {

this.nowPage = nowPage;

}

public Integer getCountPage() {

return countPage;

}

public void setCountPage(Integer countPage) {

this.countPage = countPage;

}

public Integer getCountSize() {

return countSize;

}

public void setCountSize(Integer countSize) {

this.countSize = countSize;

}

public List getDatas() {

return datas;

}

public void setDatas(List datas) {

this.datas = datas;

}

public static Integer getPagesize() {

return PAGESIZE;

}

public static void main(String[] args) {

Page page = new Page("Employee", 2);

System.out.println(page.getCountPage() + " " + page.getCountSize());

}

}

從Page.java類中可以得到所有的屬性和想得到的當前頁的信息等

當在查詢的時候就應該分頁,所以以上的servlet有一下變動,爲:

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

response.setCharacterEncoding("utf-8");

response.setContentType("text/xml;charset=utf-8");

String npage = request.getParameter("nowPage");

System.out.println(npage);

int nowPage = 1;

if ("".equals(npage) || npage == null) {

System.out.println("不能操作");

} else {

nowPage = Integer.parseInt(npage);

}

Page page = new Page("Employee", nowPage);

List<Employee> entities = page.getDatas();

PrintWriter out = response.getWriter();

out.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");

out.println("<emps nowPage='" + page.getNowPage() + "' countPage='"

+ page.getCountPage() + "' countSize='" + page.getCountSize()

+ "'>");

for (int i = 0; i < entities.size(); i++) {

Employee entity = entities.get(i);

out.println("<emp id='" + entity.getId() + "'>");

out.println("<name>" + entity.getHrName() + "</name>");

out.println("<sex>" + entity.getHrSex() + "</sex>");

out.println("<age>" + entity.getHrAge() + "</age>");

out.println("<birth>" + entity.getHrBirth() + "</birth>");

out.println("<salary>" + entity.getHrSalary() + "</salary>");

out.println("</emp>");

}

out.println("</emps>");

out.flush();

out.close();

}

從servlet中可以看出得到了當前頁信息,並且得到了當前頁所需要的:

nowPage(當前頁),countPage(總頁數),總記錄數(countSize),並轉換爲了xml數據

第五步:讀取xml文件中的屬性並分頁

當我們實現分頁的時候必須要創建首頁,下一頁,上一頁,末頁,在創建的時候因爲在window加載的時候就查詢,並且在每一次創建要重複(每一個上下頁之後都應該有),所以把它提取到一個方法裏面,傳幾個需要的參數即可:方法爲:

//分頁的實現

var pagesHtmlNode = document.getElementById("pages");

var rootNodes = xmlDoc.documentElement;

function pagesNode(pagesHtmlNode, rootNode) {

///獲取當前頁

var nowPage = rootNode.getAttribute("nowPage");

//獲取總頁數

var countPage = rootNode.getAttribute("countPage");

//獲取總記錄數

var countSize = rootNode.getAttribute("countSize");

var MsgNode = document.createTextNode("當前是:" + nowPage + "頁,總頁數爲:"

+ countPage + ",總共:" + countSize + "條記錄 ");

//清空節點

clearNodes(pagesHtmlNode);

var firstPage = document.createElement("a");

firstPage.setAttribute("href", "#");

firstPage.appendChild(document.createTextNode("首頁"));

firstPage.onclick = function() {

nowPage = 1;

//查詢 當前頁信息

getPageInfo(nowPage);

}

pagesHtmlNode.appendChild(firstPage);

var backPage = document.createElement("a");

backPage.setAttribute("href", "#");

backPage.appendChild(document.createTextNode("上一頁"));

backPage.onclick = function() {

nowPage = eval(nowPage + "-" + 1);

if (nowPage <= 1) {

nowPage = 1;

}

//查詢 當前頁信息

getPageInfo(nowPage);

}

pagesHtmlNode.appendChild(backPage);

var nextPage = document.createElement("a");

nextPage.setAttribute("href", "#");

nextPage.appendChild(document.createTextNode("下一頁"));

nextPage.onclick = function() {

//eval使加號變成+

nowPage = eval(nowPage + "+" + 1);

if (nowPage >= countPage) {

nowPage = countPage;

}

//查詢 當前頁信息

getPageInfo(nowPage);

}

pagesHtmlNode.appendChild(nextPage);

var lastPage = document.createElement("a");

lastPage.setAttribute("href", "#");

lastPage.appendChild(document.createTextNode("末頁"));

lastPage.onclick = function() {

nowPage = countPage;

//查詢 當前頁信息

getPageInfo(nowPage);

}

pagesHtmlNode.appendChild(lastPage);

pagesHtmlNode.appendChild(MsgNode);

}

在上下頁之後要查詢出所指定的當前有對應的信息,也封裝到一個方法中,用來方便調用

//分頁代碼

function getPageInfo(nowPage) {

/*//修改chksHtmlNode的默認值

var chksHtmlNode = document.getElementById("chk");

chksHtmlNode.checked = null;*/

//修改chksHtmlNode 爲 默認值

var chksHtmlNode = document.getElementById("chk");

chksHtmlNode.checked = null;

var pagesHtmlNode = document.getElementById("pages");

var empsHtmlNodes = document.getElementById("emps");

//第一步:初始化xmlHttpRequest對象

var xmlHttp = createXMLHttpRequest();

clearNodes(empsHtmlNodes);

xmlHttp.onreadystatechange = function() {

if (xmlHttp.readyState == 4) {

if (xmlHttp.status == 200) {

//獲取xmlDocuemnt

var xmlDoc = xmlHttp.responseXML;

//獲取跟標籤

var rootNodes = xmlDoc.documentElement;

var emps = xmlDoc.getElementsByTagName("emp");

for ( var i = 0; i < emps.length; i++) {

var empsNode = emps[i];

//設置id在td中

var trNode = document.createElement("tr");

var tdNode1 = document.createElement("td");

tdNode1.appendChild(document.createTextNode(emps[i]

.getAttribute("id")));

trNode.appendChild(tdNode1);

var empElemtNode = empsNode.childNodes;

for ( var j = 0; j < empElemtNode.length; j++) {

if (empElemtNode[j].nodeType == 1) {

//獲取元素節點下面的text value

var textValue = empElemtNode[j].firstChild.nodeValue;

//創建動態增加的屬性的td

var tdNode2 = document.createElement("td");

//把獲取到的值放到td2

tdNode2.appendChild(document

.createTextNode(textValue));

trNode.appendChild(tdNode2);

}

}

var delchk = document.createElement("input");

delchk.setAttribute("type", "checkbox");

delchk.setAttribute("name", "delchk");

delchk.setAttribute("value", emps[i].getAttribute("id"));

trNode.appendChild(delchk);

empsHtmlNodes.appendChild(trNode);

}

//調用分頁創建分頁相關的node節點對象

pagesNode(pagesHtmlNode, rootNode);

}

}

}

xmlHttp.open("GET", "./employeeServlet.do?nowPage=" + nowPage

+ "&timeStamp=" + new Date().getTime(), true);

xmlHttp.send(null);

}

注:在寫時候千萬要注意別寫錯代碼了,受不了,錯了一個,找了半天

刪除的操作

刪除的時候可以在右上角寫上覆選框,當點擊的時候可以全選和全不選,在向表格中插入數據的時候插入複選框,代碼爲:

var delchk = document.createElement("input");

delchk.setAttribute("type", "checkbox");

delchk.setAttribute("name", "delchk");

delchk.setAttribute("value", emps[i].getAttribute("id"));

trNode.appendChild(delchk);

empsHtmlNodes.appendChild(trNode);

當點擊chk獲取的節點的時候,實現全選和全不選

//實現全選和反選的效果

var chksHtmlNode = document.getElementById("chk");

//註冊事件

chksHtmlNode.onclick = function() {

var delchksNode = document.getElementsByName("delchk");

if (chksHtmlNode.checked) {

for ( var i = 0; i < delchksNode.length; i++) {

delchksNode[i].checked = "checked";

}

} else {

for ( var i = 0; i < delchksNode.length; i++) {

delchksNode[i].checked = null;

}

}

}

當點擊刪除按鈕的時候要請求servlet層,通過ajax請求,這裏提到了批量刪除,用字符串拼接,來發送:

//實現刪除

var delHtmlBtn = document.getElementById("delBtn");

//點擊刪除的時候 發送ajax請求

delHtmlBtn.onclick = function() {

var ids = "";

var delchksNode = document.getElementsByName("delchk");

for ( var i = 0; i < delchksNode.length; i++) {

if (delchksNode[i].checked) {

ids += delchksNode[i].value + ",";

}

}

//用ajax來發送請求

//第一步:初始化xmlHttpRequest對象

var xmlHttp = createXMLHttpRequest();

clearNodes(empsHtmlNodes);

xmlHttp.onreadystatechange = function() {

//alert("ff");

if (xmlHttp.readyState == 4) {

if (xmlHttp.status == 200) {

//獲取xmlDocuemnt

var xmlDoc = xmlHttp.responseXML;

//獲取跟標籤

var rootNodes = xmlDoc.documentElement;

var emps = xmlDoc.getElementsByTagName("emp");

for ( var i = 0; i < emps.length; i++) {

var empsNode = emps[i];

//設置id在td中

var trNode = document.createElement("tr");

var tdNode1 = document.createElement("td");

tdNode1.appendChild(document.createTextNode(emps[i]

.getAttribute("id")));

trNode.appendChild(tdNode1);

//alert(emps[i].getAttribute("id"));

var empElemtNode = empsNode.childNodes;

for ( var j = 0; j < empElemtNode.length; j++) {

if (empElemtNode[j].nodeType == 1) {

//獲取元素節點下面的text value

var textValue = empElemtNode[j].firstChild.nodeValue;

//alert(textValue);

//創建動態增加的屬性的td

var tdNode2 = document.createElement("td");

//把獲取到的值放到td2

tdNode2.appendChild(document

.createTextNode(textValue));

trNode.appendChild(tdNode2);

}

}

empsHtmlNodes.appendChild(trNode);

}

//調用分頁創建分頁相關的node節點對象

pagesNode(pagesHtmlNode, rootNode);

}

}

}

xmlHttp.open("GET", "./delEmployeeServlet.do?ids=" + ids

+ "&timeStamp=" + new Date().getTime(), true);

xmlHttp.send(null);

}

}

獲取的servelt爲:

private EmployeeService employeeService = new EmployeeServiceImpl();

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

String ids = request.getParameter("ids");

System.out.println(ids+"=============");

String value[] = ids.split(",");

for(int i = 0;i<value.length;i++){

Employee entity = employeeService.findById(Integer.parseInt(value[i]));

employeeService.remove(entity);

}

request.getRequestDispatcher("/employeeServlet.do").forward(request, response);

}

整體的jsp的代碼爲:

<%@ page language="java" import="java.util.*,cn.csdn.hr.HibernateUtil.*"

pageEncoding="utf-8"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<%

String path = request.getContextPath();

String basePath = request.getScheme() + "://"

+ request.getServerName() + ":" + request.getServerPort()

+ path + "/";

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<base href="<%=basePath%>">

<title>My JSP 'employeeList.jsp' starting page</title>

<meta http-equiv="pragma" content="no-cache">

<meta http-equiv="cache-control" content="no-cache">

<meta http-equiv="expires" content="0">

<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

<meta http-equiv="description" content="This is my page">

<!--

<link rel="stylesheet" type="text/css" href="styles.css">

-->

</head>

<body>

<div align="center">

<h1>

員工信息

</h1>

<br />

<input type="button" value="查詢員工" id="btnEmp" />

<br />

<br />

<br />

<div id="list">

<table id="empList" border="1px">

<thead>

<tr>

<th>

序號

</th>

<th>

姓名

</th>

<th>

性別

</th>

<th>

年齡

</th>

<th>

出生日期

</th>

<th>

薪資

</th>

<th>

<input type="checkbox" id="chk" />

<input type="button" value="刪除所選項 " id="delBtn" />

</th>

</tr>

</thead>

<tbody id="emps"></tbody>

</table>

</div>

<div id="pages">

</div>

</div>

</body>

</html>

<!--ajax異步請求 從傳過來的 解析成xml文件並在該頁面上顯示-->

<scripttype="text/javascript">

//頁面加載並調用匿名函數

window.onload = function() {

//實現刪除

var delHtmlBtn = document.getElementById("delBtn");

//點擊刪除的時候 發送ajax請求

delHtmlBtn.onclick = function() {

var ids = "";

var delchksNode = document.getElementsByName("delchk");

for ( var i = 0; i < delchksNode.length; i++) {

if (delchksNode[i].checked) {

ids += delchksNode[i].value + ",";

}

}

//用ajax來發送請求

//第一步:初始化xmlHttpRequest對象

var xmlHttp = createXMLHttpRequest();

clearNodes(empsHtmlNodes);

xmlHttp.onreadystatechange = function() {

//alert("ff");

if (xmlHttp.readyState == 4) {

if (xmlHttp.status == 200) {

//獲取xmlDocuemnt

var xmlDoc = xmlHttp.responseXML;

//獲取跟標籤

var rootNodes = xmlDoc.documentElement;

var emps = xmlDoc.getElementsByTagName("emp");

for ( var i = 0; i < emps.length; i++) {

var empsNode = emps[i];

//設置id在td中

var trNode = document.createElement("tr");

var tdNode1 = document.createElement("td");

tdNode1.appendChild(document.createTextNode(emps[i]

.getAttribute("id")));

trNode.appendChild(tdNode1);

//alert(emps[i].getAttribute("id"));

var empElemtNode = empsNode.childNodes;

for ( var j = 0; j < empElemtNode.length; j++) {

if (empElemtNode[j].nodeType == 1) {

//獲取元素節點下面的text value

var textValue = empElemtNode[j].firstChild.nodeValue;

//alert(textValue);

//創建動態增加的屬性的td

var tdNode2 = document.createElement("td");

//把獲取到的值放到td2

tdNode2.appendChild(document

.createTextNode(textValue));

trNode.appendChild(tdNode2);

}

}

empsHtmlNodes.appendChild(trNode);

}

//調用分頁創建分頁相關的node節點對象

pagesNode(pagesHtmlNode, rootNode);

}

}

}

xmlHttp.open("GET", "./delEmployeeServlet.do?ids=" + ids

+ "&timeStamp=" + new Date().getTime(), true);

xmlHttp.send(null);

}

//實現全選和反選的效果

var chksHtmlNode = document.getElementById("chk");

//註冊事件

chksHtmlNode.onclick = function() {

var delchksNode = document.getElementsByName("delchk");

if (chksHtmlNode.checked) {

for ( var i = 0; i < delchksNode.length; i++) {

delchksNode[i].checked = "checked";

}

} else {

for ( var i = 0; i < delchksNode.length; i++) {

delchksNode[i].checked = null;

}

}

}

var pagesHtmlNode = document.getElementById("pages");

var empsHtmlNodes = document.getElementById("emps");

//第一步:初始化xmlHttpRequest對象

var xmlHttp = createXMLHttpRequest();

//alert(xmlHttp);

var btnEmpNode = document.getElementById("btnEmp");

btnEmpNode.onclick = function() {

clearNodes(empsHtmlNodes);

xmlHttp.onreadystatechange = function() {

//alert("ff");

if (xmlHttp.readyState == 4) {

if (xmlHttp.status == 200) {

//alert("================");

//獲取xmlDocuemnt

var xmlDoc = xmlHttp.responseXML;

//alert(xmlDoc);

//獲取跟標籤

var rootNode = xmlDoc.documentElement;

var emps = xmlDoc.getElementsByTagName("emp");

for ( var i = 0; i < emps.length; i++) {

var empsNode = emps[i];

//設置id在td中

var trNode = document.createElement("tr");

var tdNode1 = document.createElement("td");

tdNode1.appendChild(document.createTextNode(emps[i]

.getAttribute("id")));

trNode.appendChild(tdNode1);

var empElemtNode = empsNode.childNodes;

for ( var j = 0; j < empElemtNode.length; j++) {

if (empElemtNode[j].nodeType == 1) {

//創建動態增加的屬性的td

var tdNode2 = document.createElement("td");

//獲取元素節點下面的text value

var textValue = empElemtNode[j].firstChild.nodeValue;

//alert(textValue);

//把獲取到的值放到td2

tdNode2.appendChild(document

.createTextNode(textValue));

trNode.appendChild(tdNode2);

}

}

var delchk = document.createElement("input");

delchk.setAttribute("type", "checkbox");

delchk.setAttribute("name", "delchk");

delchk

.setAttribute("value", emps[i]

.getAttribute("id"));

trNode.appendChild(delchk);

empsHtmlNodes.appendChild(trNode);

}

//調用分頁的實現

pagesNode(pagesHtmlNode, rootNode);

}

}

}

xmlHttp.open("GET", "./employeeServlet.do?timeStamp="

+ new Date().getTime(), true);

xmlHttp.send(null);

}

}

//分頁的實現

function pagesNode(pagesHtmlNode, rootNode) {

///獲取當前頁

var nowPage = rootNode.getAttribute("nowPage");

//獲取總頁數

var countPage = rootNode.getAttribute("countPage");

//獲取總記錄數

var countSize = rootNode.getAttribute("countSize");

var MsgNode = document.createTextNode("當前是:" + nowPage + "頁,總頁數爲:"

+ countPage + ",總共:" + countSize + "條記錄 ");

//清空節點

clearNodes(pagesHtmlNode);

var firstPage = document.createElement("a");

firstPage.setAttribute("href", "#");

firstPage.appendChild(document.createTextNode("首頁"));

firstPage.onclick = function() {

nowPage = 1;

//查詢 當前頁信息

getPageInfo(nowPage);

}

pagesHtmlNode.appendChild(firstPage);

var backPage = document.createElement("a");

backPage.setAttribute("href", "#");

backPage.appendChild(document.createTextNode("上一頁"));

backPage.onclick = function() {

nowPage = eval(nowPage + "-" + 1);

if (nowPage <= 1) {

nowPage = 1;

}

//查詢 當前頁信息

getPageInfo(nowPage);

}

pagesHtmlNode.appendChild(backPage);

var nextPage = document.createElement("a");

nextPage.setAttribute("href", "#");

nextPage.appendChild(document.createTextNode("下一頁"));

nextPage.onclick = function() {

//eval使加號變成+

nowPage = eval(nowPage + "+" + 1);

if (nowPage >= countPage) {

nowPage = countPage;

}

//查詢 當前頁信息

getPageInfo(nowPage);

}

pagesHtmlNode.appendChild(nextPage);

var lastPage = document.createElement("a");

lastPage.setAttribute("href", "#");

lastPage.appendChild(document.createTextNode("末頁"));

lastPage.onclick = function() {

nowPage = countPage;

//查詢 當前頁信息

getPageInfo(nowPage);

}

pagesHtmlNode.appendChild(lastPage);

pagesHtmlNode.appendChild(MsgNode);

}

//清空

function clearNodes(node) {

var lens = node.childNodes.length;

for ( var i = 0; i < lens; i++) {

node.removeChild(node.childNodes[0]);

}

}

//創建xmlHttpRequest對象

function createXMLHttpRequest() {

var xmlHttp;

try {

//在firefox opera等非瀏覽器中運行的

xmlHttp = new XMLHttpRequest();

} catch (ex) {

try {

//在IE中運行 運行的是第二個版本

xmlHttp = new ActiveXObject("MSXML2.XMLHTTP");

} catch (e) {

// 在IE中運行第一個版本

xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");

}

}

return xmlHttp;

}

//分頁代碼

function getPageInfo(nowPage) {

/*//修改chksHtmlNode的默認值

var chksHtmlNode = document.getElementById("chk");

chksHtmlNode.checked = null;*/

//修改chksHtmlNode 爲 默認值

var chksHtmlNode = document.getElementById("chk");

chksHtmlNode.checked = null;

var pagesHtmlNode = document.getElementById("pages");

var empsHtmlNodes = document.getElementById("emps");

//第一步:初始化xmlHttpRequest對象

var xmlHttp = createXMLHttpRequest();

clearNodes(empsHtmlNodes);

xmlHttp.onreadystatechange = function() {

if (xmlHttp.readyState == 4) {

if (xmlHttp.status == 200) {

//獲取xmlDocuemnt

var xmlDoc = xmlHttp.responseXML;

//獲取跟標籤

var rootNodes = xmlDoc.documentElement;

var emps = xmlDoc.getElementsByTagName("emp");

for ( var i = 0; i < emps.length; i++) {

var empsNode = emps[i];

//設置id在td中

var trNode = document.createElement("tr");

var tdNode1 = document.createElement("td");

tdNode1.appendChild(document.createTextNode(emps[i]

.getAttribute("id")));

trNode.appendChild(tdNode1);

var empElemtNode = empsNode.childNodes;

for ( var j = 0; j < empElemtNode.length; j++) {

if (empElemtNode[j].nodeType == 1) {

//獲取元素節點下面的text value

var textValue = empElemtNode[j].firstChild.nodeValue;

//創建動態增加的屬性的td

var tdNode2 = document.createElement("td");

//把獲取到的值放到td2

tdNode2.appendChild(document

.createTextNode(textValue));

trNode.appendChild(tdNode2);

}

}

var delchk = document.createElement("input");

delchk.setAttribute("type", "checkbox");

delchk.setAttribute("name", "delchk");

delchk.setAttribute("value", emps[i].getAttribute("id"));

trNode.appendChild(delchk);

empsHtmlNodes.appendChild(trNode);

}

//調用分頁創建分頁相關的node節點對象

pagesNode(pagesHtmlNode, rootNode);

}

}

}

xmlHttp.open("GET", "./employeeServlet.do?nowPage=" + nowPage

+ "&timeStamp=" + new Date().getTime(), true);

xmlHttp.send(null);

}

</script>

總結:其實抓住了分頁的根本就可以寫出來,中間出現的問題必須要解決,其中全選和反選也是一個知識點…

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章