`
plkong
  • 浏览: 177426 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Ajax留言本实现

    博客分类:
  • Ajax
阅读更多

创建一个Ajax应用程序的步骤做一总结:

第一步:创建XMLHttpRequest对象。

第二步:使用XMLHttpRequest对象的Open方法创建请求。

第三步:使用XMLHttpRequest对象的send方法发送请求。

第四步:使用XMLHttpRequest对象的 onreadystatechange事件来捕获请求状态信息。

我们以一个完整留言板应用程序来演示整个过程。

一、 数据库设计

这里只需要一个留言表来保存留言,其表结构如下表所示:

字段名称

数据类型

说明

id

Int(4)

关键字,确定唯一性

title

Varchar(200)

标题

author

Varchar(200)

作者

date

Varchar(50)

留言日期

content

Varchar(600)

内容

二、 客户端程序设计

在Ajax应用程序中,页面设计和传统Web设计方式没有什么差别,同样是使用HTML标记和CSS来将内容呈现给最终用户。所不同的是,Ajax的页面在载入完成后可以通过DOM模型来修改页面的内容和布局,达到改变显示效果。这就需要在进行页面设计时要去符合一定的标准,要求表现与数据结构相分离。

    1. 创建一个CSS样式文件style.css,代码如下:

@CHARSET "UTF-8";
body{
font-size:0.75em;
text-align:center;
}
dl{
margin:0;
}
dt{
background-color:#339900;
color:#FFFFFF;
margin:1px;
padding:0 3px;
}
dd{
margin:3px;
}
div{
margin:auto;
line-height:150%;
text-align:left;
width:400px;
border:1px solid #006600;
}

#postMsg{
margin-top:10px;
}
dd.button{
text-align:center;
}
dd.button input{
margin:0 20px;
}

 

    2.页面message设计:

<%@ page language="java" contentType="text/html; charset=utf-8"
	pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<%
//数据库用户名和密码
String userName = "root";
String userPasswd = "1984428";
//需要连接的数据库名
String dbName = "studyajax";
//表名
String tableName = "message";
//创建连接并执行查询操作
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/"+dbName,userName,userPasswd);
Statement statement = conn.createStatement();
String sql = "SELECT * FROM " + tableName;
ResultSet rs = statement.executeQuery(sql);

//获取数据结果集
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link type="text/css" rel="stylesheet" rev="stylesheet"
	href="CSS/style.css" />
<title>Ajax实现留言板</title>
<script language="javascript" type="text/javascript">
<!--
//将用户留言信息显示到当前页面
function addToList(date){
	//获取留言本div容器
	var msg = document.getElementById("msgList");
	//为了解决IE与Firefox在兼容性,一般获取对象使用
	//document.getElementById("msgList"),使用对象ID来访问对象
	//这里需要注意的是,IE中大小写不区分的,而Firefox中大小写严格区分
	//所以使用时按照大小写区分来书写代码
	//创建dl标记及其子标记
	var dl = document.createElement("dl");
	var dt = document.createElement("dt");
	var dd1 = document.createElement("dd");
	var dd2 = document.createElement("dd");
	//将结点插入到相应的位置
	msg.insertBefore(dl,msg.firstChild);
	dl.appendChild(dt);
	dl.appendChild(dd1);
	dl.appendChild(dd2);
	//填充留言板
	dt.innerHTML = "标题:" + document.forms[0].title.value;
	dd1.innerHTML = "作者:" + document.forms[0].author.value + "   日期:"+date;
	dd2.innerHTML = document.forms[0].content.value;
	//清空输入框内容
	document.forms[0].title.value = "";
	document.forms[0].author.value = "";
	document.forms[0].content.value = "";
}
//将留言异步提交到服务器
function ajaxSubmit(){
	//获取用户输入
	var title = document.forms[0].title.value;
	
	var author = document.forms[0].author.value;
	var content = document.forms[0].content.value;
	
	//创建XMLHttpRequest对象
	var xmlhttp;
	try{
	//IE 5.0 
		xmlhttp = new ActiveXObject('Msxm12.XMLHTTP');
	}catch(e){
		try{
		//IE 5.5 及更高版本
			xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
		}catch(e){
			try{
			//其他浏览器
				xmlhttp = new XMLHttpRequest();
			}catch(e){}
		}
	}
		xmlhttp.open("post","msgAdd.jsp",true);
	//在使用post方法提交请求时,需要设置HTTP头
    xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    //发送请求
	xmlhttp.send("title="+escape(title)+"&author="+escape(author)+"&content="+escape(content));
	//xmlhttp.send(null);
		//创建请求结果处理程序
	xmlhttp.onreadystatechange = function(){
		if(4==xmlhttp.readyState){
		//在测试中,可能会出现XMLHttpRequest.status的值为 0,此时表示本地调用成功
		//alert("xmlhttp.responseText1="+xmlhttp.responseText);
			if(200==xmlhttp.status){
				var date = xmlhttp.responseText;
				//alert("xmlhttp.responseText="+xmlhttp.responseText);
				addToList(date);
			}else{
				alert("error"+"xmlhttp.readyState="+xmlhttp.readyState+"xmlhttp.status="+xmlhttp.status);
			}
		}
	}
	
}
//-->
</script>
</head>
<body>
<!-- 开始显示留言 -->
<div id="msgList">
<%
while( rs.next()){
%>
<dl>
	<dt>标题:<%=rs.getString("title") %></dt>
	<dd>作者:<%=rs.getString("author") %>   日期: <%=rs.getString("date") %></dd>
	<dd><%=rs.getString("content") %></dd>
</dl>
<%} %>
</div>
<% 
	rs.close();
	statement.close();
	conn.close();
%>
<!-- 结束显示留言 -->
<div id="postMsg">
<form method="post">
<dl>
<dt>发表你的留言:</dt>
<dd>标题:<input type="text" maxlength="150" size="45" name="title" /> </dd>
<dd>作者:<input type="text" maxlength="150" size="45" name="author" /></dd>
<dd>内容 <textarea rows="10" cols="45" name="content"></textarea></dd>
<dd>
<input type="button" value="提交" onclick="ajaxSubmit()"/>
<!--
注意:提交按钮的type必须为button,而不是submit。
 -->
<input type="reset" value="重填"/>
</dd>
</dl>
</form>
</div>
</body>
</html>
 

三、 服务器端程序设计

在Ajax应用程序中,服务器端程序接收客户端发送过来的参数并进行一定的处理,然后返回一个执行状态或客户端需要的返回值。

本留言板效果是当用户提交完信息后,页面不需要刷新,立即将显示用户先前自己提交的内容。由于留言内容是客户端页面提交的,因而客户端知道留言内容,服务器端在保存了留言内容后,并不需要返回留言内容,只需要返回一个留言提交成功的状态。有时服务器端合客户端的时间并不一定相同,所以为了统一期间,在服务器端成功保存留言内容后,返回一个服务器端的留言时间。这样的设计就减少了客户端和服务器端数据的传递量,从而提够速度。达到快速响应的效果。

服务器端页面为msgAdd.jsp,其源代码如下:

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.sql.*,java.io.*,java.text.SimpleDateFormat" %>
<%@page import="java.util.Date"%>
<%
//数据库用户名和密码
String userName = "root";
String userPasswd = "111111";
//需要连接的数据库名
String dbName = "studyajax";
//表名
String tableName = "message";
//创建连接并执行查询操作
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/"+dbName,userName,userPasswd);
Statement statement = conn.createStatement();
//格式化日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String date = sdf.format(new Date()).toString();
String sql = "INSERT INTO " + tableName +"(title,author,date,content) values('"+request.getParameter("title")+"','"+request.getParameter("author")+"','"+ date +"','" + request.getParameter("content")+"')";
int result = statement.executeUpdate(sql);
 	response.setContentType("text/html; charset=UTF-8");
 	response.setHeader("Cache-Control", "no-cache");
	PrintWriter pout = null;
 	try {
 		pout = response.getWriter();
 		pout.print(date);
 	} catch (IOException e) {
		 e.printStackTrace();
 	}finally{
 		statement.close();
 		conn.close();
 	}	
%>
 

 

  • 描述: 最终运行效果
  • 大小: 29.1 KB
5
3
分享到:
评论
1 楼 BackMe 2011-07-29  
终于找到需要的东西了,学习中!  好东西果断收藏!

相关推荐

    Php mysql ajax 实现留言本

    **PHP、MySQL与AJAX实现的简易留言本详解** 在Web开发中,PHP、MySQL和AJAX是构建动态、交互式网站的重要技术。本教程将详细介绍如何使用这三种技术实现一个基本的在线留言本,这对于初学者理解它们的集成工作原理...

    原创ajax留言本原创ajax留言本

    【标题】"原创ajax留言本"所涉及的知识点主要集中在使用AJAX技术实现的一个互动性的留言簿应用。AJAX(Asynchronous JavaScript and XML)是一种在无需刷新整个网页的情况下,能够更新部分网页的技术。通过AJAX,...

    无刷新留言本,AJAX留言本

    无刷新留言本是一种基于AJAX(Asynchronous JavaScript and XML)技术实现的互动功能,它允许用户在不重新加载整个网页的情况下与服务器交换数据并更新部分网页内容。这种技术极大地提升了用户体验,因为它使得用户...

    AJAX无刷新留言本

    【AJAX无刷新留言本】是一种利用Ajax技术实现的网页应用程序,它允许用户与服务器进行交互,无需重新加载整个页面,从而提供更为流畅和高效的用户体验。这个程序是基于ASP(Active Server Pages)开发的,ASP是微软...

    非常简洁的ajax留言本实例

    这个“非常简洁的Ajax留言本实例”是一个典型的使用Ajax实现的交互式应用,旨在帮助初学者理解Ajax在实际项目中的应用。 首先,我们需要了解Ajax的核心原理:通过JavaScript异步发送HTTP请求到服务器,获取数据后在...

    AJAX留言本源码

    【标题】:“AJAX留言本源码” 这个标题指出我们关注的是一个使用AJAX技术实现的留言本系统。AJAX,全称为Asynchronous JavaScript and XML(异步JavaScript和XML),是一种在无需重新加载整个网页的情况下,能够...

    Ajax经典实例留言本全过程(ASP实现)

    通过这个Ajax留言本实例,我们可以深入理解Ajax如何与服务器进行通信,以及如何利用ASP处理这些请求。同时,我们也了解了Dojo库在实际项目中的应用,以及如何利用它来增强网页的交互性。这是一个很好的实践项目,...

    PHP和AJAX写的简单留言本

    【PHP和AJAX写的简单留言本】是一种利用PHP和AJAX技术实现的互动式网站功能,主要用于用户在不刷新整个页面的情况下与服务器进行数据交互,提高用户体验。在本项目中,用户可以提交留言,系统实时处理并显示在页面上...

    php源码\Ajax PHP留言本

    在Ajax PHP留言本中,Ajax实现了无刷新交互,用户在页面上留言或查看留言时,页面其他部分保持不变,提高了用户体验。Ajax通过JavaScript发送异步HTTP请求到服务器,获取响应后动态更新DOM元素,实现数据的实时交换...

    AJAX留言本--简易版

    【标题】"AJAX留言本--简易版"指的是一个基于AJAX技术的简单留言板应用程序,它使用了ASP(Active Server Pages)服务器端脚本技术来处理数据交互,并结合客户端的AJAX实现页面无刷新更新。 【描述】"ASP+AJAX简易...

    ajax 留言本,基于 DOJO + PHP + MYSQL

    综上所述,“ajax 留言本,基于 DOJO + PHP + MYSQL”是一个结合了现代前端技术与传统后端服务的实践案例,展示了如何利用AJAX实现无刷新的用户体验,同时利用DOJO、PHP和MYSQL的强大功能来创建一个动态的、用户友好...

    PHP+AJAX留言本

    【PHP+AJAX留言本】是一个典型的Web应用程序,它结合了PHP服务器端脚本语言和AJAX(异步JavaScript和XML)技术,为用户提供了一种无需刷新页面即可发送和接收数据的互动体验。这个项目的核心功能是让用户在网站上...

    AJAX留言板AJAX留言板 AJAX 留言板 留言 BBS

    在本项目中,"AJAX留言板"是利用AJAX技术实现的一个互动平台,允许用户在不刷新页面的情况下发送和查看留言,提升了用户体验。下面我们将深入探讨AJAX留言板的相关知识点。 1. **异步通信**:AJAX的核心在于...

    三层Ajax留言本源码

    【标题】:“三层Ajax留言本源码” 这个项目是一个基于Ajax技术实现的三层架构的留言本应用。三层架构是软件开发中的一个经典设计模式,它将应用分为数据访问层(DAL)、业务逻辑层(BLL)和表示层(UI)。这种架构...

    最新AJAX留言本代码

    在这个“最新AJAX留言本代码”中,我们可以看到如何利用AJAX实现一个交互性更强、用户体验更佳的在线留言系统。下面将详细介绍这个系统的几个关键知识点。 1. **前端页面结构**: - HTML结构:HTML文件(可能名为`...

    vs2005+ajax留言本

    【标题】"vs2005+ajax留言本"是一个基于Visual Studio 2005(简称VS2005)开发的Web应用程序,利用了Ajax(Asynchronous JavaScript and XML)技术来实现一个互动式的留言本功能。这个例子旨在展示如何在ASP.NET环境...

    ajax留言板

    【Ajax留言板】是一种基于Web技术实现的互动式应用,它允许用户无需刷新整个网页即可向服务器发送异步请求,更新页面的部分内容。在本案例中,"留言板简单功能"是利用Ajax技术实现实时交互的用户留言系统,使得用户...

    ajax奥运留言本

    在实现Ajax留言本的过程中,开发者可能使用了以下关键技术: - **jQuery**:一个流行的JavaScript库,简化了DOM操作、事件处理和Ajax通信。 - **AJAX请求**:通过`$.ajax()`或`$.post()`等方法发送异步请求到服务器...

    Ajax留言本2.0.rar

    Ajax留言本2.0是一款基于ASP.NET技术构建的交互式应用程序,它利用Ajax(Asynchronous JavaScript and XML)技术实现页面的无刷新更新,为用户提供更流畅、更快捷的浏览体验。Ajax的核心在于通过JavaScript与服务器...

Global site tag (gtag.js) - Google Analytics