-----------------------------------------------
一、JavaScript实现AJAX(只需四步)
-----------------------------------------------
1、第一步:获取XMLHttpRequest对象
-----------------------------------------------
//(1)获取XMLHttpRequest对象
var xmlHttp = ajaxFunction();
function ajaxFunction(){
var xmlHttp;
try{
//现代浏览器(IE7+、Firefox、Chrome、Safari 和 Opera)都有内建的 XMLHttpRequest 对象
xmlHttp = new XMLHttpRequest();
}catch(e){
try{
//IE6.0
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
try{
//IE5.0及更早版本
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}catch(e){
alert("...");
throw e;
}
}
}
return xmlHttp;
}
-----------------------------------------------
2、第二步:打开与服务器的连接
//(2)打开与服务器的连接
xmlHttp.open(method, url, async);
参数1:method: 请求方式,可以是GET或POST
参数2:url: 所要访问的服务器中资源的路径,如: /day08/XxxServlet
参数3:async: 是否为异步传输,true表示为异步传输,一般都是true。
-----------------------------------------------
3、第三步:发送请求
//(3)通知服务器发送的数据是请求参数
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); //(4)发送请求并传递参数给服务器
xmlHttp.send("xxxx"); //注意,如果不给参数可能会造成部分浏览器无法发送请求
a)如果是GET请求,可以传一个null,参数可以在第2步中拼接在url后面。例如:
xmlHttp.send(null);
b)如果是POST请求,传入的就是请求参数,例如:
xmlHttp.send("username="+username+"&psw="+psw)
-----------------------------------------------
4、第四步,注册监听
在XMLHttpRequest对象的一个事件上注册监听:
onreadystatechange
一共有五个状态:(xmlHttp.readyState)
0状态: 表示刚创建XMLHttpRequest对象,还未调用open()方法
1状态: 表示刚调用open()方法,但是还没有调用send()方法发送请求
2状态: 调用完了send()方法了,请求已经开始
3状态: 服务器已经开始响应,但是不代表响应结束
4状态: 服务器响应结束!(通常我们只关心这个状态)
获取xmlHttp对象的状态:
var state = xmlHttp.readyState;//可能得到0,1,2,3,4
获取服务器响应的状态码
var status = xmlHttp.status;
获取服务器响应的内容
var data = xmlHttp.responseText;//得到服务器响应的文本格式的数据

//(5)注册监听,时刻监听服务器处理请求的状态
xmlHttp.onreadystatechange = function(){
if(xmlHttp.readyState == 4){
//状态为4表示服务器已经处理完成,但是不代表处理成功
if(xmlHttp.status == 200){//当状态码为200,表示服务器成功的处理了请求
var result = xmlHttp.responseText;
//xxx
}
}
}

-----------------------------------------------
二、jQuery实现AJAX
-----------------------------------------------
1、$.ajax方法
$.ajax(url, [type], [async], [data], [async], [callback]);
参数解析:
url -- 发送请求的URL地址
type -- 可选,请求方式,默认为"GET"。
async -- 可选,默认为true,表示异步交互
data -- 可选,发送至服务器的key/value数据
dataType -- 可选,服务器响应数据的类型,默认是responseXML或responseText,其中可用的数据类型有:
json:返回JSON数据。
xml:返回XML文档,可用JS或jQuery处理。
text:返回纯文本字符串。
html:返回纯文本HTML内容,包含的script标签会在插入DOM时执行。
script:返回纯文本JavaScript代码。不会自动缓存结果。除非设置了cache参数。注意在远程请求时(不在同一个域下),所有post请求都将转为get请求。
success -- 可选,请求成功后执行的函数,函数参数:
result -- 服务器返回的数据

代码示例: 校验用户名是否存在
$.ajax({
"url" : "<%= request.getContextPath() %>/AjaxCheckUsernameServlet",
"data" : {"username": username},
"async" : true,
"type" : "POST",
"success" : function(result){
$("#err-msg").html("<font style='color:red'>"+result+"</font>")
}
});
-----------------------------------------------
2、$.get方法、$.post方法
$.get(url, [data], [callback]); -- 请求方式为GET
$.post(url, [data], [callback]); -- 请求方式为POST
参数解析:
url -- 发送请求的URL地址
data -- 可选,向服务器发送的数据
callback -- 可选,请求成功后所执行的函数

代码示例:校验用户名是否存在
$.get("<%= request.getContextPath() %>/AjaxCheckUsernameServlet", {"username": username}, function(result){
$("#err-msg").html("<font style='color:red'>"+result+"</font>");
});
-----------------------------------------------
3、load方法
$(selector).load(url,data,callback);
参数解析:
selector -- 选择器,将从服务器获取到的数据加载到指定的元素中
url -- 发送请求的URL地址
data -- 可选,向服务器发送的数据 key/value数据 如:{"username" : "张飞", "psw" : "123"}
callback -- 可选,load方法完成后所执行的函数
代码示例:
$("#err-msg").load("<%= request.getContextPath() %>/AjaxCheckUsernameServlet", {"username": username});
-----------------------------------------------

一、JavaScript实现AJAX(只需四步)的更多相关文章

  1. 为什么学Python语言,只需四步全面了解Python语言

    为什么学Python语言,只需四步全面了解Python语言每个时代都会悄悄犒赏会选择的人,Python现在风口的语言Python--第三大主流编程语言Python , 是一种面向对象的解释型计算机程序 ...

  2. vuex其实超简单,只需3步

    前言 之前几个项目中,都多多少少碰到一些组件之间需要通信的地方,而因为种种原因,event bus 的成本反而比vuex还高, 所以技术选型上选用了 vuex, 但是不知道为什么,团队里的一些新人一听 ...

  3. 只需一步,DLA开启TableStore多元索引查询加速!

    一.背景介绍 Data Lake Analytics(简称DLA)在构建第一天就是支持直接关联分析Table Store(简称OTS)里的数据,实现存储计算分离架构,满足用户基于SQL接口分析Tabl ...

  4. 如何把C++的源代码改写成C代码?而C改C++只需一步!

    ★ 如何把C++的源代码改写成C代码? C++解释器比C语言解释器占用的存储空间要大,想要在某些特定场合兼容C++代码,同时为了节省有限的存储空间,降低成本,也为了提高效率,将用C++语言写的源程序用 ...

  5. 安装go语言,配置环境及IDE,只需3步

    安装go语言,配置环境及IDE,只需3步 ( 欢迎加入go语言群: 218160862 , 群内有实践) 第1.下载 go压缩包,解压   ,如果你是window系统,请选择go1.5.windows ...

  6. PDF怎么旋转页面,只需几步轻松搞定!

    有时候我们下载一个PDF文件里面有页面是旋转的情况,用手机看的时候可以把手机旋转过来看,那么用电脑的时候总不可能也转过来看吧,笔记本是可以的台式的是不行的,这个时候我们就需要把PDF文件中旋转的页面转 ...

  7. 只需3步,快来用AI预测你爱的球队下一场能赢吗?

    摘要:作为球迷,我们有时候希望自己拥有预测未来的能力. 本文分享自华为云社区<用 AI 预测球赛结果只需三步,看看你爱的球队下一场能赢吗?>,作者:HWCloudAI. 还记得今年夏天的欧 ...

  8. 用keytool创建Keystore和Trustsotre文件只需五步

    用keytool创建Keystore和Trustsotre文件 JSSE使用Truststore和Keystore文件来提供客户端和服务器之间的安全数据传输.keytool是一个工具可以用来创建包含公 ...

  9. 产品开发也要看阵容,APP开发只需五步变得靠谱

    最早认识的一个朋友是程序员,曾经到一家外包公司接单子,小外包公司经常遇到的问题就是和需求方谈产品功能.客户要做外包,对方让他一次性报价,但是客户连功能点自己都不清楚,这时朋友说还是按照具体功能点来做吧 ...

随机推荐

  1. 网络 IO 工作机制

    ref: 深入分析 java web 技术内幕 2.3 两台计算机之间进行数据的传输需要经过很多步骤.首先有相互沟通的意向,然后还要有沟通的通道:通过电话还是面对面交流(物理链路).最后,两个人说话的 ...

  2. sql中大于等于小于的写法

    由于在mybatis框架的xml中<= , >=解析会出现问题,编译报错,所以需要转译第一种写法: 原符号 < <= > >= & ' "替换符号 ...

  3. 码农英语四级考了6次,也能进知名IT外企

    程序员学英语 这显然不是新鲜的话题,但再怎么重复强调都不过分! 为啥要学 IT是当今世界发展最快的行业,没有之一!作为其中的从业人员,要始终保持对最新技术的关注度,难免需要阅读英文新闻或文章 平时工作 ...

  4. Eureka Server启动过程分析

    1.首先,SpringCloud充分利用了SpringBoot的自动装配特点 eureka-server的jar包,发现在META-INF下面的配置文件spring.factories,里面记录了Sp ...

  5. C语言3中循环语句的比较

    (1)while和do-while循环只在while后面指定条件,在循环体中应包含使循环趋于结束的语句如(I++):for循环可以在表达式三中包含使循环趋于结束的操作,可以设置循环体中的操作全部放在语 ...

  6. RewriteCond 和RewriteRule规则说明 (转)

    Apache的Mod_rewrite学习 (RewriteCond重写规则的条件)收藏RewriteCond Syntax: RewriteCond TestString CondPattern [f ...

  7. spring cache 学习——@CachePut 使用详解

    1. 功能说明 当需要在不影响方法执行的情况下更新缓存时,可以使用 @CachePut,也就是说,被 @CachePut 注解的缓存方法总是会执行,而且会尝试将结果放入缓存(当然,是否真的会缓存还跟一 ...

  8. CentOS 6安装Gitlab

    1. 保证CentOS 6能连接网络 . 2.安装依赖: sudo yum install -y curl policycoreutils-python openssh-server cronie s ...

  9. 改进你的c#代码的5个技巧(三)

    本文完全独立于前两篇文章.如果你喜欢它们,我希望你也会喜欢这个.在上一篇文章中,我展示了哪种方法更快,并比较了代码的执行速度.在本文中,我将展示不同代码片段的内存消耗情况.为了显示内存映射和分配图,我 ...

  10. 【SpringBoot1.x】SpringBoot1.x 消息

    SpringBoot1.x 消息 文章源码 概述 大多应用中,可通过消息服务中间件来提升系统异步通信.扩展解耦能力. 消息服务有两个重要概念,即消息代理(message broker)和目的地(des ...