- 浏览: 62276 次
- 性别:
- 来自: 北京
最新评论
-
762236694:
请问,如果不用JSP小脚本用EL怎么调用呢??
JSP中使用EL调用集合 -
viproc:
您能列举些具体的例子吗?别总拿书上的东西贴出来,汗
什么是面向对象的设计思想? -
fahuihou:
嗯,我想是因为调用上面add方法后s的值和sMain的值扔指向 ...
Java对象及其引用 -
Niklai:
本人正在学习SSH...
感觉用起来确实很不错
对于博主提到的 ...
JAVA SSH框架
使用Ajax动态更新页面
1.初始化:从数据库中提取信息,在页面中显示,创建添加表单和删除按钮(本例中使用动态数组模拟数据库);
2.添加:在表单中输入数据,提交,服务器验证数据合法性,向数据库中插入数据,返回XML文档给客户端;
客户端接收XML文档,提取信息,判断数据是否成功插入数据库,如果成功则更新页面,根据返回值创建一行数据;
3.删除:点击删除按钮,服务器从数据库中删除该记录,返回XML文档给客户端;
客户端接收XML文档,提取信息,判断数据是否从数据库中成功删除,如果成功则更新页面,删除该行数据;
update.html:
程序代码
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Update</title>
<script src="js/update.js"></script>
</head>
<body onLoad="doInit();">
<h1>Student List</h1>
<form id="form1">
No:<input id="no" type="text" />
Name:<input id="name" type="text" />
Age:<input id="age" type="text" size="5" />
<input type="button" value="ADD" onClick="doAdd();" />
<span id="error"></span>
<h2>Students</h2>
<table id="tab" border="1">
<tbody id="tb">
<tr style="background-color:#bababa">
<th>No.</th>
<th>Name</th>
<th>Age</th>
<th>Operate</th>
</tr>
</tbody>
</table>
</form>
</body>
</html>
update.js:
程序代码
var xmlHttp;
var action;
var delID;
function createXMLHttpRequest() {
if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} else if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
}
}
function doInit() {
action = "init";
createXMLHttpRequest();
xmlHttp.onreadystatechange = callback;
var url = "update.mgc?action=init×tamp=" + new Date().getTime();
xmlHttp.open("GET", url, true);
xmlHttp.send(null);
}
function doAdd() {
action = "add";
createXMLHttpRequest();
xmlHttp.onreadystatechange = callback;
var url = "update.mgc?timestamp=" + new Date().getTime();
xmlHttp.open("POST", url, true);
xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
var no = document.getElementById("no").value;
var name = document.getElementById("name").value;
var age = document.getElementById("age").value;
var queryString = "action=add&no=" + no + "&name=" + name + "&age=" + age;
xmlHttp.send(queryString);
}
function doDel(no) {
action = "del";
delID = "stu" + no;
createXMLHttpRequest();
xmlHttp.onreadystatechange = callback;
var url = "update.mgc?timestamp=" + new Date().getTime();
xmlHttp.open("POST", url, true);
xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
var queryString = "action=del&no=" + no;
xmlHttp.send(queryString);
}
function callback() {
if (xmlHttp.readyState == 4) {
if (xmlHttp.status == 200) {
if (action == "init") {
parseInit();
} else if (action == "add") {
parseAdd();
} else if (action == "del") {
parseDel();
}
}
}
}
function parseInit() {
var xmlDoc = xmlHttp.responseXML;
var span = document.getElementById("error").innerHTML = "";
var error = xmlDoc.getElementsByTagName("error")[0].childNodes[0].nodeValue;
if (error != "null") {
}
clearTab();
var stus = xmlDoc.getElementsByTagName("student");
for (var i = 0; i < stus.length; i++) {
var stu = stus[i];
var no = stu.childNodes[0].childNodes[0].nodeValue;
var name = stu.childNodes[1].childNodes[0].nodeValue;
var age = stu.childNodes[2].childNodes[0].nodeValue;
createRow(no, name, age);
}
clearInput();
}
function clearTab() {
var list = document.getElementById("tb");
if (list.hasChildNodes()) {
while (list.childNodes.length > 1) {
list.removeChild(list.childNodes[1]);
}
}
}
function createRow(no, name, age) {
var list = document.getElementById("tb");
var newTr = document.createElement("tr");
newTr.setAttribute("id", "stu" + no);
createCell(newTr, no);
createCell(newTr, name);
createCell(newTr, age);
var newTd = document.createElement("td");
var btn = document.createElement("input");
btn.type = "button";
btn.value= "DEL";
btn.onclick = function() {doDel(no);};
newTd.appendChild(btn);
newTr.appendChild(newTd);
list.appendChild(newTr);
}
function createCell(newTr, tdContent) {
var newTd = document.createElement("td");
var newContent = document.createTextNode(tdContent);
newTd.appendChild(newContent);
newTr.appendChild(newTd);
}
function clearInput() {
document.getElementById("no").value = "";
document.getElementById("name").value = "";
document.getElementById("age").value = "";
}
function parseAdd() {
var list = document.getElementById("tb");
var xmlDoc = xmlHttp.responseXML;
var error = xmlDoc.getElementsByTagName("error")[0].firstChild.nodeValue;
if (error == "null") {
var stu = xmlDoc.getElementsByTagName("student")[0];
var no = stu.childNodes[0].firstChild.nodeValue;
var name = stu.childNodes[1].firstChild.nodeValue;
var age = stu.childNodes[2].firstChild.nodeValue;
createRow(no, name, age);
var span = document.getElementById("error").innerHTML = "";
} else {
var span = document.getElementById("error").innerHTML = error;
}
}
function parseDel() {
var list = document.getElementById("tb");
var xmlDoc = xmlHttp.responseXML;
var error = xmlDoc.getElementsByTagName("error")[0].firstChild.nodeValue;
if (error == "null") {
var delElem = document.getElementById(delID);
list.removeChild(delElem);
var span = document.getElementById("error").innerHTML = "";
}
}
Update.java:
程序代码
package cn.edu.ahau.mgc.ajax.update;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Update extends HttpServlet {
List<Student> stus;
String error = "null";
private void initData() {
stus = new ArrayList<Student>();
stus.add(new Student("1001","Magci",20));
stus.add(new Student("1002","Haha",16));
stus.add(new Student("1003","Heihei",24));
stus.add(new Student("1004","Wawa",22));
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
error = "null";
String action = request.getParameter("action");
StringBuffer xml = new StringBuffer();
response.setContentType("text/xml");
response.setHeader("Cache-Control", "no-cache");
if ("init".equals(action)) {
this.initData();
xml.append("<response>");
xml.append("<error>" + error + "</error>");
xml.append("<students>");
for (Iterator<Student> iterator = stus.iterator(); iterator.hasNext();) {
Student stu = iterator.next();
xml.append("<student>");
xml.append("<no>" + stu.getNo() + "</no>");
xml.append("<name>" + stu.getName() + "</name>");
xml.append("<age>" + stu.getAge() + "</age>");
xml.append("</student>");
}
xml.append("</students>");
xml.append("</response>");
} else if ("add".equals(action)) {
String no = request.getParameter("no");
String name = request.getParameter("name");
int age = 0;
try {
age = Integer.parseInt(request.getParameter("age"));
} catch (NumberFormatException e) {
age = 20;
}
Student newStu = new Student(no, name, age);
if (newStu.check() && !this.isExist(newStu)) {
stus.add(newStu);
}
xml.append("<response>");
xml.append("<error>" + error + "</error>");
xml.append("<student>");
xml.append("<no>" + no + "</no>");
xml.append("<name>" + name + "</name>");
xml.append("<age>" + age + "</age>");
xml.append("</student>");
xml.append("</response>");
} else if ("del".equals(action)) {
String no = request.getParameter("no");
delete(no);
xml.append("<response>");
xml.append("<error>" + error + "</error>");
xml.append("</response>");
}
PrintWriter out = response.getWriter();
out.print(xml);
out.flush();
out.close();
System.out.println(stus.size());
}
private boolean isExist(Student stu) {
boolean isExist = false;
for (Iterator<Student> iterator = stus.iterator(); iterator.hasNext();) {
Student stuItem = (Student) iterator.next();
if (stuItem.getNo().equals(stu.getNo())) {
error = "Your NO. already exists!";
isExist = true;
}
}
return isExist;
}
private void delete(String no) {
Student reStu = null;
for (Iterator<Student> iterator = stus.iterator(); iterator.hasNext();) {
Student stu = (Student) iterator.next();
if (stu.getNo().equals(no)) {
reStu = stu;
}
}
stus.remove(reStu);
}
class Student {
private String no;
private String name;
private int age;
public Student(String no, String name, int age) {
this.no = no;
this.name = name;
this.age = age;
}
public String getNo() {
return no;
}
public void setNo(String no) {
this.no = no;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public boolean check() {
boolean isRight = true;
if (this.no == null || "".equals(this.no) || this.name == null || "".equals(this.name)) {
error = "Please enter No. or Name!";
isRight = false;
}
return isRight;
}
}
}
web.xml:
程序代码
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>Update</servlet-name>
<servlet-class>cn.edu.ahau.mgc.ajax.update.Update</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Update</servlet-name>
<url-pattern>/update.mgc</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
1.初始化:从数据库中提取信息,在页面中显示,创建添加表单和删除按钮(本例中使用动态数组模拟数据库);
2.添加:在表单中输入数据,提交,服务器验证数据合法性,向数据库中插入数据,返回XML文档给客户端;
客户端接收XML文档,提取信息,判断数据是否成功插入数据库,如果成功则更新页面,根据返回值创建一行数据;
3.删除:点击删除按钮,服务器从数据库中删除该记录,返回XML文档给客户端;
客户端接收XML文档,提取信息,判断数据是否从数据库中成功删除,如果成功则更新页面,删除该行数据;
update.html:
程序代码
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Update</title>
<script src="js/update.js"></script>
</head>
<body onLoad="doInit();">
<h1>Student List</h1>
<form id="form1">
No:<input id="no" type="text" />
Name:<input id="name" type="text" />
Age:<input id="age" type="text" size="5" />
<input type="button" value="ADD" onClick="doAdd();" />
<span id="error"></span>
<h2>Students</h2>
<table id="tab" border="1">
<tbody id="tb">
<tr style="background-color:#bababa">
<th>No.</th>
<th>Name</th>
<th>Age</th>
<th>Operate</th>
</tr>
</tbody>
</table>
</form>
</body>
</html>
update.js:
程序代码
var xmlHttp;
var action;
var delID;
function createXMLHttpRequest() {
if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} else if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
}
}
function doInit() {
action = "init";
createXMLHttpRequest();
xmlHttp.onreadystatechange = callback;
var url = "update.mgc?action=init×tamp=" + new Date().getTime();
xmlHttp.open("GET", url, true);
xmlHttp.send(null);
}
function doAdd() {
action = "add";
createXMLHttpRequest();
xmlHttp.onreadystatechange = callback;
var url = "update.mgc?timestamp=" + new Date().getTime();
xmlHttp.open("POST", url, true);
xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
var no = document.getElementById("no").value;
var name = document.getElementById("name").value;
var age = document.getElementById("age").value;
var queryString = "action=add&no=" + no + "&name=" + name + "&age=" + age;
xmlHttp.send(queryString);
}
function doDel(no) {
action = "del";
delID = "stu" + no;
createXMLHttpRequest();
xmlHttp.onreadystatechange = callback;
var url = "update.mgc?timestamp=" + new Date().getTime();
xmlHttp.open("POST", url, true);
xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
var queryString = "action=del&no=" + no;
xmlHttp.send(queryString);
}
function callback() {
if (xmlHttp.readyState == 4) {
if (xmlHttp.status == 200) {
if (action == "init") {
parseInit();
} else if (action == "add") {
parseAdd();
} else if (action == "del") {
parseDel();
}
}
}
}
function parseInit() {
var xmlDoc = xmlHttp.responseXML;
var span = document.getElementById("error").innerHTML = "";
var error = xmlDoc.getElementsByTagName("error")[0].childNodes[0].nodeValue;
if (error != "null") {
}
clearTab();
var stus = xmlDoc.getElementsByTagName("student");
for (var i = 0; i < stus.length; i++) {
var stu = stus[i];
var no = stu.childNodes[0].childNodes[0].nodeValue;
var name = stu.childNodes[1].childNodes[0].nodeValue;
var age = stu.childNodes[2].childNodes[0].nodeValue;
createRow(no, name, age);
}
clearInput();
}
function clearTab() {
var list = document.getElementById("tb");
if (list.hasChildNodes()) {
while (list.childNodes.length > 1) {
list.removeChild(list.childNodes[1]);
}
}
}
function createRow(no, name, age) {
var list = document.getElementById("tb");
var newTr = document.createElement("tr");
newTr.setAttribute("id", "stu" + no);
createCell(newTr, no);
createCell(newTr, name);
createCell(newTr, age);
var newTd = document.createElement("td");
var btn = document.createElement("input");
btn.type = "button";
btn.value= "DEL";
btn.onclick = function() {doDel(no);};
newTd.appendChild(btn);
newTr.appendChild(newTd);
list.appendChild(newTr);
}
function createCell(newTr, tdContent) {
var newTd = document.createElement("td");
var newContent = document.createTextNode(tdContent);
newTd.appendChild(newContent);
newTr.appendChild(newTd);
}
function clearInput() {
document.getElementById("no").value = "";
document.getElementById("name").value = "";
document.getElementById("age").value = "";
}
function parseAdd() {
var list = document.getElementById("tb");
var xmlDoc = xmlHttp.responseXML;
var error = xmlDoc.getElementsByTagName("error")[0].firstChild.nodeValue;
if (error == "null") {
var stu = xmlDoc.getElementsByTagName("student")[0];
var no = stu.childNodes[0].firstChild.nodeValue;
var name = stu.childNodes[1].firstChild.nodeValue;
var age = stu.childNodes[2].firstChild.nodeValue;
createRow(no, name, age);
var span = document.getElementById("error").innerHTML = "";
} else {
var span = document.getElementById("error").innerHTML = error;
}
}
function parseDel() {
var list = document.getElementById("tb");
var xmlDoc = xmlHttp.responseXML;
var error = xmlDoc.getElementsByTagName("error")[0].firstChild.nodeValue;
if (error == "null") {
var delElem = document.getElementById(delID);
list.removeChild(delElem);
var span = document.getElementById("error").innerHTML = "";
}
}
Update.java:
程序代码
package cn.edu.ahau.mgc.ajax.update;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Update extends HttpServlet {
List<Student> stus;
String error = "null";
private void initData() {
stus = new ArrayList<Student>();
stus.add(new Student("1001","Magci",20));
stus.add(new Student("1002","Haha",16));
stus.add(new Student("1003","Heihei",24));
stus.add(new Student("1004","Wawa",22));
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
error = "null";
String action = request.getParameter("action");
StringBuffer xml = new StringBuffer();
response.setContentType("text/xml");
response.setHeader("Cache-Control", "no-cache");
if ("init".equals(action)) {
this.initData();
xml.append("<response>");
xml.append("<error>" + error + "</error>");
xml.append("<students>");
for (Iterator<Student> iterator = stus.iterator(); iterator.hasNext();) {
Student stu = iterator.next();
xml.append("<student>");
xml.append("<no>" + stu.getNo() + "</no>");
xml.append("<name>" + stu.getName() + "</name>");
xml.append("<age>" + stu.getAge() + "</age>");
xml.append("</student>");
}
xml.append("</students>");
xml.append("</response>");
} else if ("add".equals(action)) {
String no = request.getParameter("no");
String name = request.getParameter("name");
int age = 0;
try {
age = Integer.parseInt(request.getParameter("age"));
} catch (NumberFormatException e) {
age = 20;
}
Student newStu = new Student(no, name, age);
if (newStu.check() && !this.isExist(newStu)) {
stus.add(newStu);
}
xml.append("<response>");
xml.append("<error>" + error + "</error>");
xml.append("<student>");
xml.append("<no>" + no + "</no>");
xml.append("<name>" + name + "</name>");
xml.append("<age>" + age + "</age>");
xml.append("</student>");
xml.append("</response>");
} else if ("del".equals(action)) {
String no = request.getParameter("no");
delete(no);
xml.append("<response>");
xml.append("<error>" + error + "</error>");
xml.append("</response>");
}
PrintWriter out = response.getWriter();
out.print(xml);
out.flush();
out.close();
System.out.println(stus.size());
}
private boolean isExist(Student stu) {
boolean isExist = false;
for (Iterator<Student> iterator = stus.iterator(); iterator.hasNext();) {
Student stuItem = (Student) iterator.next();
if (stuItem.getNo().equals(stu.getNo())) {
error = "Your NO. already exists!";
isExist = true;
}
}
return isExist;
}
private void delete(String no) {
Student reStu = null;
for (Iterator<Student> iterator = stus.iterator(); iterator.hasNext();) {
Student stu = (Student) iterator.next();
if (stu.getNo().equals(no)) {
reStu = stu;
}
}
stus.remove(reStu);
}
class Student {
private String no;
private String name;
private int age;
public Student(String no, String name, int age) {
this.no = no;
this.name = name;
this.age = age;
}
public String getNo() {
return no;
}
public void setNo(String no) {
this.no = no;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public boolean check() {
boolean isRight = true;
if (this.no == null || "".equals(this.no) || this.name == null || "".equals(this.name)) {
error = "Please enter No. or Name!";
isRight = false;
}
return isRight;
}
}
}
web.xml:
程序代码
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>Update</servlet-name>
<servlet-class>cn.edu.ahau.mgc.ajax.update.Update</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Update</servlet-name>
<url-pattern>/update.mgc</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
发表评论
-
Ajax中创建XMLHttpRequest对象
2009-09-18 13:33 1000Ajax中创建XMLHttpRequest对象 1.声明一个全 ... -
Ajax中XMLHttpRequest对象的方法和属性
2009-09-18 13:29 1011Ajax中XMLHttpRequest对象的方法和属性 1.X ... -
Ajax实现下拉列表联动
2009-09-18 13:26 1095Ajax实现下拉列表联动 1.取得一级列表中的值,通过XMLH ... -
Ajax实现自动更新页面(不刷新页面更新网页内容)
2009-09-08 15:29 6390Ajax实现自动更新页面(不刷新页面更新网页内容) 1.使用X ... -
使用Ajax显示进度条
2009-09-08 15:28 1577使用Ajax显示进度条 1.进度条由DIV框和数个有背景颜色的 ... -
使用Ajax实现自动完成
2009-09-08 15:27 1003使用Ajax实现自动完成 1.初始化:使用DIV作为提示框,初 ... -
使用Ajax打造属于自己的搜索引擎
2009-09-08 15:25 861使用Ajax打造属于自己的搜索引擎 1.建立Yahoo!网关, ...
相关推荐
这是一个非常酷的弹出对话框程序,用于网页设计中,在弹出对话框时,他会让原来的页面以半透明状显示,然后,在同一页面中弹出一个新的对话框,在其中使用AJAX动态加载网页,或者图片等等。包含完整的使用例子和说明...
本资源包括了ajax+asp实现页面更新的全套教程和代码
网页加载时的ajax动态进度条。 目前比较流行的技术。而且是chm格式的哦
使用Ajax实现页面无刷新(局部刷新),以登录为例,诠释了ajax的强大和适用。方法简单易懂。
AJAX实现页面表格的添删改查操作,异步刷新,有温馨手册,直接部署到项目即可使用,数据库已备,非常方便的代码。
本例实现页面自动刷新的效果,该页面的内容如图5-4所示,在该页面中将根据数据库中存储的最新数据信息更新页面中热卖商品的信息,但是对这些信息的修改并不会导致整个页面的刷新。 实际的Web应用中,诸如:天气预报...
该DEMO用四种目前流行Ajax工具实现下拉菜单的动态刷新 所设置的选择有三个,依次是学院,班级和学生姓名。 通过四种Ajax工具JQuery、JSON、DWR、Prototype分别实现页面与后台(类文件)的数据交互,从而使得在不...
ajax实时更新天气预报
今天小编就为大家分享一篇Django结合ajax进行页面实时更新的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
Ajax全新教程 无刷新页面 无刷新数据更新 无刷新绑定 asp.net全新Ajax教程
使用urllib,request爬取ajax动态页面信息(爬取响应json文件) 有详细的分析步骤,由于发布不了博客,只能上传资源发布。
主要介绍了python爬取Ajax动态加载网页过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
js+ajax动态分页,附带使用方法!注释比较全 小白亦可使用。
ajax动态检测用户是否已存在,以便更人性化的提示用户。
SpringBoot使用Ajax实现登录例子
一个基于PHP+Ajax实现的apTabs Ajax动态网页选项卡源码程序
在实际应用中我们经常会用到树,无论是用javascript实现还是用TreeView等控件,都能很好的...为了解决这个问题,我曾经在项目里利用Ajax来动态加载节点,即开始只显示必要的节点,当用户展开树的时候再加载对应的节点......
《JSP+Dreamweaver CS4+CSS+Ajax动态网站开发典型案例》光盘 完整源代码 有3个完整的jsp网站 第1章 设计Web标准网页 1.1 设个人主页 1.2 设计CSS 1.3 设计新闻查看页面 1.4 设计博客网站首页 1.5 CSS设计页面布局 ...
AJAX购物车,基于prototype和scriptaculousAJAX购物车,基于prototype和scriptaculous
功能说明: 本程序根据原子哥STM32H7开发板源码...刷新问题:网页通过ajax方式对指定的数据进行更新,开发板源码上传需要更新的数据,整体网页不变。 关于资源的说明详情见:https://mp.csdn.net/postedit/101171210