走进AJAX
来源:互联网 发布:xp无法映射网络驱动器 编辑:程序博客网 时间:2024/04/26 10:29
Asynchronous JavaScript And XML:异步的JavaScript和XML
AJAX含概了5方面的内容:
一:使用XHTML和CSS的基于标准的表示技术
二:使用DOM进行动态显示和交互
三:使用XML和XSLT进行数据交换和处理
四:使用XMLHttpRequest进行异步数据检索
五:使用JavaScript将以上技术融合在一起
AJAX其实就是老技术,新思想
AJAX能做什么?
(1)改善表单验证方式,不再需要打开新页面,也不要将整个页面数据提交
(2)不需要刷新页面就可以改变页面内容,减少用户等待时间。
(3)按需获取数据,每次只从服务器端获取需要的数据
(4)读取外部数据,进行数据机整合
(5)异步与服务器进行交互,在交互过程中用户无需等待,仍可继续操作
XMLHttpRequest常用方法
open(method,URL,async):建立与服务器的链接。(method指定请求的HTTP的方法,URL请求的地址,async是否使用异步请求其值是true/false)
send(content):发送请求。(content指定请求的参数)
setRequestHeader(header,value):设置请求的头信息
当XMLHttpRequest的send()方法不匹配参数即xmlHttpRequest.send()时,在IE中能够正常运行,但在Firefox中不能,建议最好加null
XMLHttpRequest常用属性
onreadystatechange:制定XMLHttpRequest对象的回调函数。
(onreaderstatechange属性的作用与文本框的onblur等的属性一样,是事件处理属性,即当XMLHttpRequest的状态发生改变时,XMLHttpRequest对象都会触发onreadystatechange所指向的函数)
readyState:XMLHttpRequest的状态信息。
0:XMLHttpRequest对象没有完成初始化。
1:XMLHttpRequest对象开始发送请求。
2:XMLHttpRequest对象的请求发送完成。
3:XMLHttpRequest对象开始读取相应)
4:XMLHttpRequest对象读取想要结束
states:HTTP的状态秘密。仅当readyState的值为3或4时,status属性才可用。
200:服务器相应正常
400:无法找到请求的资源
403:没有访问权限
404:访问的资源不存在
500:服务器内部错误
responseText:获得相应的文本内容。
(当readyState响应的值为0/1/2时,responseText包含一个空字符串。当readyState的值为3时,响应中包含客户端还未完成的响应信息。当readyState的值为4时,responseText包含完整的响应信息)
responseXML:获得相应的XML文档对象。
(如果readyState的值不为4,则responseXML的值为null.
当responseXML接收完整的响应时,如果Content-Type指定的MIME类型不包含text/html或applicatoin/xml或+xml结尾之一的MIME类型,则responseXML的值为null)
小结
使用AJAX技术实现异步交互的步骤如下:
(1)创建XMLHttpRequest对象
(2)通过XMLHttpRequest对象设置请求信息
(3)向服务器发送请求
(4)创建回调函数,根据相应状态动态更新页面
AJAX的使用
(1)通过XMLHttpRequest对象向服务器发送请求。
(2)使用XMLHttpRequest对象解析服务器响应数据。
(3)通过JavaScript脚步动态显示网页
页面无刷新的用户登录(路径:/ajax)
============================
<script type="text/javascript">
function $(path){
return document.getElementById(path);
}
//创建XMLHttpRequest对象
var XMLHttp;
function createXMLHttpRequest(){
if(window.XMLHttpRequest){
XMLHttp=new XMLHttpRequest();
}else if(window.ActiveObject){
XMLHttp=new ActiveObject("Micorsoft.XMLHTTP");
}
}
//验证是否为空
function check(){
var name=$("uname");
var pwd=$("upwd");
if(name.value==""){
$("unamediv").innerHTML="请输入用户名";
name.focus();
return false;
}
if(pwd.value==""){
alert("请输入密码");
pwd.focus();
return false;
}
doAjax();
}
//提交请求数据
function doAjax(){
createXMLHttpRequest();
var name=$("uname").value;
var pwd=$("upwd").value;
if(XMLHttp!=null){
//建立于服务器的链接
XMLHttp.open("POST","/ajax/AjaxServlet?name="+name+"&pwd="+pwd,true);
//设置请求的头信息
XMLHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;");
//指定回调函数
XMLHttp.onreadystatechange=processRequest;
//发送请求
XMLHttp.send(null);
}else{
alert("不能创建XMLHttpRequest对象实例");
}
}
//对返回数据进行处理
function processRequest(){
//alert(XMLHttp.readyState);
if(XMLHttp.readyState==4){//XMLHttpRequest的状态信息
//alert(XMLHttp.status);
if(XMLHttp.status==200){//HTTP的状态码
//获得相应的文本内容
var str=XMLHttp.responseText;
if(str!=0){
$("login").innerHTML="欢迎<b>"+str+"</b>登录"+"<a href='#'>login out</a>";
}else{
$("error").innerHTML="用户名或密码错误";
}
}
}
}
</script>
</head>
<body>
<div id="login">
<label>登录名</label>
<input type="text" id="uname" name="uname" vlaue="" size="19"/>
<label id="unamediv" name="unamediv"></label><br/>
<label>密  码</label>
<input type="password" id="upwd" name="upwd" value=""/>
<label id="error" name="error"></label><br/>
<input type="button" value="登录" onclick="check()"/>
</div>
</body>
============================
public final class AjaxServlet extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
String name=request.getParameter("name");
String pwd=request.getParameter("pwd");
log("用户名:"+name);
log("密码:"+pwd);
PrintWriter out = response.getWriter();
if(name.equals("accp") && pwd.equals("123"))
out.print(name);
else
out.print(0);
out.flush();
out.close();
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
}
==============================================
<html>
<head>
<title>使用AJAX实现省市级联</title>
<script type="text/javascript">
function $(path){
return document.getElementById(path);
}
//创建XMLHttpRequest对象
var XMLHttp;
function createXMLHttpRequest(){
if(window.XMLHttpRequest){
XMLHttp=new XMLHttpRequest();
}else if(window.ActiveObject){
XMLHttp=new ActiveObject("Microsoft.XMLHTTP");
}
}
//提交请求数据
function doAjax(index){
createXMLHttpRequest();
if(index=="load"){
var url="/thirtenn/RelatingServlet?load="+index;
}else{
var provinceId=$("province").value;
var url="/thirtenn/RelatingServlet?provinceId="+provinceId;
}
if(XMLHttp!=null){
//建立与服务器的链接
XMLHttp.open("POST",url,true);
//指定回调函数
if(index=="load"){
XMLHttp.onreadystatechange=load;
}else if(index==index){
XMLHttp.onreadystatechange=city;
}
//发送请求
XMLHttp.send(null);
}
}
//页面加载时对返回数据处理
function load(){
//alert(XMLHttp.readyState);
if(XMLHttp.readyState==4){
if(XMLHttp.status==200){
//获得相应的文本内容
var provinceList=XMLHttp.responseText.split(";");
if(provinceList!=null){
for(var i=0;i<provinceList.length;i++){
var sf=provinceList[i];
//然后按照连字符”-”,取出省份编号和省份名称
var sfId=sf.split("-")[0];
var sfName=sf.split("-")[1];
//创建选项对象option
var option=document.createElement("option");
//设置option的value属性和显示的数据
option.value=sfId;
option.innerHTML=sfName;
//将option追加到下拉框
document.getElementById("province").appendChild(option);
}
}
}
}
}
//级联城市
function city(){
if(XMLHttp.readyState==4){
if(XMLHttp.status==200){
//获得相应的文本内容
var cityList=XMLHttp.responseText.split(";");
if(cityList!=null){
//获得所选省类别的选项值
var provinceValue=$("province").value;
//清空城市地区列表
$("city").options.length=0;
//设置默认选中城市地区
$("city").selectedIndex=1;
for(var i=0;i<cityList.length;i++){
var ct=cityList[i];
//然后按照连字符”-”,取出省份编号和省份名称
var cityId=ct.split("-")[0];
var cityName=ct.split("-")[1];
//创建选项对象option
var option=document.createElement("option");
//设置option的value属性和显示的数据
option.value=cityId;
option.innerHTML=cityName;
//将option追加到下拉框
document.getElementById("city").appendChild(option);
}
}
}
}
}
</script>
</head>
<body onload="doAjax('load')">
<div align="center">
<div style="width:600px">
<h1>使用AJAX实现省市级联</h1>
省<select id="province" name="province" onChange="doAjax(1)">
<option>--请选择所在省--</option>
</select>
市<select id="city" name="city">
<option>请选择所在城市</option>
</select>
</div>
</div>
</body>
</html>
- 走进AJAX
- 走进AJAX
- 走进ajax大门---基础
- 【B/S】走进AJAX
- 带你走进AJAX(1)
- 带你走进ajax(2)
- 带你走进ajax(3)
- 带你走进ajax(4)
- AJAX技术入门 第一节 走进AJAX
- 走进Borland!
- 走进香格里拉
- 走进Boost
- 走进Boost
- 走进Boost
- 走进QuickWAP
- 走进围城
- 走进Boost
- 走进正则
- android之AlertDailog使用
- zlib使用
- 使用JavaScript实现判断密码强度
- linux 的 ls 命令的使用方法
- JS中的反射
- 走进AJAX
- LUA与python根本就不具有可比性
- Excel函数大全
- python学习笔记
- 在堆上生成的wxAuiManager造成内存泄漏(wxWidgets 2.9.1版本)
- javascript TextRange对象--查找与选择
- 如何实现asp.net三层架构
- GDB简单教程
- 数学中说的线性关系线性是什么意思?