1、ajax是什么 ?
①ajax(asynchronouse javascript and xml) 异步的javascript 和 xml
② 7种技术的综合,它包含了七个技术( javascript xml xstl xhtml dom xmlhttprequest css), ajax 是一个粘合剂,
③ajax是一个与服务端语言无关的技术. 即可以使用在(php/java ee/.net网站/ asp)
④ajax可以给客户端返回三种格式数据(文本格式 ,xml , json格式)
⑤无刷新数据交换技术有以下: flash, java applet, 框架, iframe, ajax)
2、ajax 的运行原理分析
ajax更详细的原理图
3、使用ajax与服务器通信的的步骤
- 创建一个XMLHttpRequest对象
- 创建url,data,通过 xmlHttpRequest.send()
- 服务器端接收 ajax的请求,做相应处理(操作数据库),然后返回结果
- 客户端通过xmlHttpRequest的属性 reponseText , responseXML 取的数据,然后就完成局部刷新当前页面任务
4、使用ajax完成用户名是否存在验证
registerProcess.jsp
<%@ page contentType="text/html" pageEncoding="utf-8"%>
<%
String username = request.getParameter("username");
if("dahao".equals(username)){ //3号线
out.print("用户名不可用");
}
else out.print("用户名可用");
%>
register_get.html
使用get方式向服务器提交请求
<html>
<head>
<title>用户注册</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script type="text/javascript">
//创建ajax引擎
function getXmlHttpObject(){
var xmlHttpRequest;
if(window.ActiveXObject){
xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
else{
xmlHttpRequest = new XMLHttpRequest();
}
return xmlHttpRequest;
}
function $(id) {
return document.getElementById(id);
}
//验证用户名是否存在
var myXmlHttpRequest = "";
function checkUser() {
myXmlHttpRequest = getXmlHttpObject(); //1号线
//判断是否创建成功
if (myXmlHttpRequest) {
//通过myXmlHttpRequest对象发送请求到服务器的某个页面
//第一个参数表示请求的方式,“get”/“post”
//第二个参数指定URL,对哪个页面发出ajax请求(本质仍然是http请求)
//第三个参数true表示使用异步机制,false即不使用
var url = "/ajax/registerProcess.jsp?username=" + $("username").value;
//打开请求
myXmlHttpRequest.open("get", url, true);
//指定回调函数,process是函数名
myXmlHttpRequest.onreadystatechange = process;
//发送请求,如果是get请求,填入null即可;如果是post请求,则填入实际的数据
myXmlHttpRequest.send(null); //2号线
}
}
//回调函数
function process() {
//window.alert("函数被调用" + myXmlHttpRequest.readyState);
if(myXmlHttpRequest.readyState == 4) { //4号线
//取出服务器返回的值
//window.alert("服务器返回:" + myXmlHttpRequest.responseText);
$("myres").value = myXmlHttpRequest.responseText;
}
}
</script>
</head>
<body>
<form action="???" method="post">
用户名字:<input type="text" onblur="checkUser();" name="username1" id="username">
<input style="border-width:0;color:red" type="text" id="myres">
<br/>
用户密码:<input type="password" name="password"><br>
电子邮件:<input type="text" name="email"><br/>
<input type="submit" value="用户注册">
</form>
<form action="???" method="post">
用户名字:<input type="text" name="username2" >
<br/>
用户密码:<input type="password" name="password"><br>
电子邮件:<input type="text" name="email"><br/>
<input type="submit" value="用户注册">
</form>
</body>
</html>
register_post.html
使用post方式向服务器提交请求
<html>
<head>
<title>用户注册</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script type="text/javascript">
//创建ajax引擎
function getXmlHttpObject(){
var xmlHttpRequest;
if(window.ActiveXObject){
xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
else{
xmlHttpRequest = new XMLHttpRequest();
}
return xmlHttpRequest;
}
function $(id) {
return document.getElementById(id);
}
//验证用户名是否存在
var myXmlHttpRequest = "";
function checkUser() {
myXmlHttpRequest = getXmlHttpObject(); //1号线
//判断是否创建成功
if (myXmlHttpRequest) {
//通过myXmlHttpRequest对象发送请求到服务器的某个页面
//第一个参数表示请求的方式,“get”/“post”
//第二个参数指定URL,对哪个页面发出ajax请求(本质仍然是http请求)
//第三个参数true表示使用异步机制,false即不使用
var url = "/ajax/registerProcess.jsp";
//这个是要发送的数据
var data = "username="+$("username").value;
//打开请求
myXmlHttpRequest.open("post", url, true);
//使用post方式发送时,这句话是必需的
myXmlHttpRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
//指定回调函数,process是函数名
myXmlHttpRequest.onreadystatechange = process;
//发送请求,如果是get请求,填入null即可;如果是post请求,则填入实际的数据
myXmlHttpRequest.send(data); //2号线
}
}
//回调函数
function process() {
//window.alert("函数被调用" + myXmlHttpRequest.readyState);
if(myXmlHttpRequest.readyState == 4) { //4号线
//取出服务器返回的值
//window.alert("服务器返回:" + myXmlHttpRequest.responseText);
$("myres").value = myXmlHttpRequest.responseText;
}
}
</script>
</head>
<body>
<form action="???" method="post">
用户名字:<input type="text" onblur="checkUser();" name="username1" id="username">
<input style="border-width:0;color:red" type="text" id="myres">
<br/>
用户密码:<input type="password" name="password"><br>
电子邮件:<input type="text" name="email"><br/>
<input type="submit" value="用户注册">
</form>
<form action="???" method="post">
用户名字:<input type="text" name="username2" >
<br/>
用户密码:<input type="password" name="password"><br>
电子邮件:<input type="text" name="email"><br/>
<input type="submit" value="用户注册">
</form>
</body>
</html>
运行结果如下: